python numpy中setdiff1d的用法

举报
悲恋花丶无心之人 发表于 2021/02/03 00:14:30 2021/02/03
【摘要】 目录 一、函数解释 二、具体示例 三、整体代码 一、函数解释 setdiff1d(ar1, ar2, assume_unique=False) 1.功能:找到2个数组中集合元素的差异。 2.返回值:在ar1中但不在ar2中的已排序的唯一值。 3.参数: ar1:array_like 输入数组。ar2:array_like 输入比较数组。assume_uni...

目录

一、函数解释

二、具体示例

三、整体代码


一、函数解释

setdiff1d(ar1, ar2, assume_unique=False)
 

1.功能:找到2个数组中集合元素的差异。

2.返回值:在ar1中但不在ar2中的已排序唯一值

3.参数:

  • ar1:array_like 输入数组。
  • ar2:array_like 输入比较数组。
  • assume_unique:bool。如果为True,则假定输入数组是唯一的,即可以加快计算速度。 默认值为False。

二、具体示例

1.assume_unique = False的情况:


  
  1. a = np.array([1,2,3])
  2. b = np.array([4,5,6])
  3. c = np.setdiff1d(a, b)
  4. print(c)#[1 2 3]

  
  1. a = np.array([1,2,3])
  2. b = np.array([1,2,3])
  3. c = np.setdiff1d(a, b)
  4. print(c)#[]

  
  1. a = np.array([1,2,3])
  2. b = np.array([2,3,4])
  3. c = np.setdiff1d(a, b)
  4. print(c)#[1]

  
  1. a = np.array([1,2,3,4])
  2. b = np.array([3,4,5,6])
  3. c = np.setdiff1d(a, b)
  4. print(c)#[1 2]

  
  1. a = np.array([1,2,3,2,4,1])
  2. b = np.array([3,4,5,6])
  3. c = np.setdiff1d(a, b)
  4. print(c)#[1 2]

  
  1. a = np.array([8,2,3,2,4,1])
  2. b = np.array([7,4,5,6,3])
  3. c = np.setdiff1d(a, b)
  4. print(c)#[1 2 8]

可以从最后看出返回的值从小到大排序,并且唯一。(8在a的第1位,2在a中重复了2次


2.assume_unique = True的情况:


  
  1. a = np.array([3,2,1])
  2. b = np.array([4,5,6])
  3. c = np.setdiff1d(a, b,True)
  4. print(c)#[3 2 1]

  
  1. a = np.array([8,2,3,2,4,1])
  2. b = np.array([7,4,5,6,3])
  3. c = np.setdiff1d(a, b,True)
  4. print(c)#[8 2 2 1]

  
  1. a = np.array([8,2,3,4,2,4,1])
  2. b = np.array([7,9,5,6,3])
  3. c = np.setdiff1d(a, b,True)
  4. print(c)#[8 2 4 2 4 1]

可以看出把在a中的但是不在b中的元素按a中的顺序排序,并且不合并重复的元素,即假定输入数组也是唯一的,因此相比于False确实提升了运算速度。


三、整体代码


  
  1. import numpy as np
  2. def main():
  3. a = np.array([1,2,3])
  4. b = np.array([4,5,6])
  5. c = np.setdiff1d(a, b)
  6. print(c)#[1 2 3]
  7. a = np.array([1,2,3])
  8. b = np.array([1,2,3])
  9. c = np.setdiff1d(a, b)
  10. print(c)#[]
  11. a = np.array([1,2,3])
  12. b = np.array([2,3,4])
  13. c = np.setdiff1d(a, b)
  14. print(c)#[1]
  15. a = np.array([1,2,3,4])
  16. b = np.array([3,4,5,6])
  17. c = np.setdiff1d(a, b)
  18. print(c)#[1 2]
  19. a = np.array([1,2,3,2,4,1])
  20. b = np.array([3,4,5,6])
  21. c = np.setdiff1d(a, b)
  22. print(c)#[1 2]
  23. a = np.array([8,2,3,2,4,1])
  24. b = np.array([7,4,5,6,3])
  25. c = np.setdiff1d(a, b)
  26. print(c)#[1 2 8]
  27. a = np.array([3,2,1])
  28. b = np.array([4,5,6])
  29. c = np.setdiff1d(a, b,True)
  30. print(c)#[3 2 1]
  31. a = np.array([8,2,3,2,4,1])
  32. b = np.array([7,4,5,6,3])
  33. c = np.setdiff1d(a, b,True)
  34. print(c)#[8 2 2 1]
  35. a = np.array([8,2,3,4,2,4,1])
  36. b = np.array([7,9,5,6,3])
  37. c = np.setdiff1d(a, b,True)
  38. print(c)#[8 2 4 2 4 1]
  39. if __name__ == '__main__':
  40. main()

                                                           


多学习这样的函数,对数据处理很有帮助~

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/89916399

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。