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的情况:


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

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

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

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

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

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

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


2.assume_unique = True的情况:


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

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

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

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


三、整体代码


      import numpy as np
      def main():
       a = np.array([1,2,3])
       b = np.array([4,5,6])
       c = np.setdiff1d(a, b)
       print(c)#[1 2 3]
       a = np.array([1,2,3])
       b = np.array([1,2,3])
       c = np.setdiff1d(a, b)
       print(c)#[]
       a = np.array([1,2,3])
       b = np.array([2,3,4])
       c = np.setdiff1d(a, b)
       print(c)#[1]
       a = np.array([1,2,3,4])
       b = np.array([3,4,5,6])
       c = np.setdiff1d(a, b)
       print(c)#[1 2]
       a = np.array([1,2,3,2,4,1])
       b = np.array([3,4,5,6])
       c = np.setdiff1d(a, b)
       print(c)#[1 2]
       a = np.array([8,2,3,2,4,1])
       b = np.array([7,4,5,6,3])
       c = np.setdiff1d(a, b)
       print(c)#[1 2 8]
       a = np.array([3,2,1])
       b = np.array([4,5,6])
       c = np.setdiff1d(a, b,True)
       print(c)#[3 2 1]
       a = np.array([8,2,3,2,4,1])
       b = np.array([7,4,5,6,3])
       c = np.setdiff1d(a, b,True)
       print(c)#[8 2 2 1]
       a = np.array([8,2,3,4,2,4,1])
       b = np.array([7,9,5,6,3])
       c = np.setdiff1d(a, b,True)
       print(c)#[8 2 4 2 4 1]
      if __name__ == '__main__':
       main()
  
 

                                                           


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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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