intellij idea汉化 协程 VR全景图片 微信小程序 docker安装部署 matplotlib module eking文件 flexbox Modernizr Select2 vue的钩子函数 nodejs教程视频 idea全文搜索快捷键 python中的index python文件操作 python正则表达 java变量类型 java怎么连接数据库 java遍历集合 java的for循环 java获取url java定义 java类方法 java判断 java日期转时间戳 exescope教程 怪物猎人ol捏脸数据 js删除数组指定元素 如何强行退出小米账号 js关闭当前页面 gunzip js正则匹配字符串 mysql时间比较 手工画像 python列表求和 cdr字体变形 cad文件 无线网改密码 8700和8700k
当前位置: 首页 > 学习教程  > python

Python:numpy 差集、异或集、并集、交集

2021/2/8 15:55:42 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

numpy 中有以下类似 set 集合的操作: 差集 setdiff1d(),异或集 setxor1d(),并集 union1d(),交集 intersect1d(),以及判断是否存在的 in1d() 和 isin() (前五个函数名称中包含数字1) 1、nump…

numpy 中有以下类似 set 集合的操作:

差集 setdiff1d(),异或集 setxor1d(),并集 union1d(),交集 intersect1d(),以及判断是否存在的 in1d() 和 isin() 

(前五个函数名称中包含数字1)

1、numpy.setdiff1d(array1, array2, assume_unique=False) 

功能:用于获得 array1 和 array2 的差集,返回在 array1 中但不在 array2 中的值;

实现:将 array1 和 array2 扁平化到1维后判断 array2 元素是否在 array1 中 再取反

assume_unique 默认 False,假定输入值不是唯一的,会先分别对 array1 和 array2 执行一个 unique 操作,而且 unique 的结果本身就是排序后的;

assume_unique 为 True 时,假定输入值是唯一的,不会先对 array1 和 array2 执行 unique 操作;

2、numpy.setxor1d(array1, array2, assume_unique=False) 

功能:用于获得 array1 和 array2 的 异或元素,即仅存在于一个 array 中的值,结果是排序后的;

实现:该函数通过将 array1 和 array2 合并为一个 array,升序排序后判断相邻元素是否相同以保留异或集;

assume_unique 默认 False,假定输入值不是唯一的,会先分别对 array1 和 array2 执行一个 unique 操作;

assume_unique 为 True 时,假定输入值是唯一的,不会先对 array1 和 array2 执行 unique 操作,此时如果其中一个 array 中有重复值,该重复值会在 array 合并后被认为是“存在于两个 array 的重复值”的而被去掉,但确实是仅存在于一个 array 的重复值,结果会有问题(见下图),所以 assume_unique 一般应设为 False;

3、numpy.union1d(array1, array2)

功能:用于获得 array1 和 array2 的 并集,结果是排序后且去重的;

实现:该函数通过将 array1 和 array2 合并为一个 array,再使用 unique 进行操作;

4、numpy.intersect1d(array1, array2, assume_unique=False, return_indices=False)

功能:用于获得 array1 和 array2 的 交集,结果是排序后的;

实现:该函数通过将 array1 和 array2 合并为一个 array,排序后求交集;

assume_unique 默认 False,假定输入值不是唯一的,会先分别对 array1 和 array2 执行一个 unique 操作;

assume_unique 为 True 时,假定输入值是唯一的,不会先对 array1 和 array2 执行 unique 操作,此时如果其中一个 array 中有重复值,该重复值会在 array 合并后被认为是“存在于两个 array 的共有值”的而被留下,但确实是仅存在于一个 array 的重复值,结果会有问题(见下图),所以 assume_unique 一般应设为 False;

return_indices 默认 False,不获取交集下标;return_indices 为 True 时,返回交集在两个 array 里的下标;

5、numpy.in1d(array1, array2, assume_unique=False, invert=False)

功能:判断 array1 中元素是否存在于 array2 中,存在返回 True,不存在返回 False,结果形状为一维 array;

实现:array1 和 array2 如果不是 array 则会被转换为 array ;该函数通过将 array1 和 array2 

assume_unique 默认 False,假定输入值不是唯一的,会先分别对 array1 和 array2 执行一个 unique 操作;

assume_unique 为 True 时,假定输入值是唯一的,不会先对 array1 和 array2 执行 unique 操作;

invert 默认 False,表示正常返回 True/False 结果,即 array1 中元素存在于 array2 中为 True,不存在为 False; 

invert 为 True 返回 True/False 取反后的结果,即 array1 中元素存在于 array2 中为 False,不存在为 True;

如果 array2 是个 set,则 array2 会被转换为一个 object array,而不是包含 array2 元素的 array,所以 array2 不应为 set;

6、numpy.isin(array1, array2, assume_unique=False, invert=False)

功能:判断 array1 中元素是否存在于 array2 中,存在返回 True,不存在返回 False,结果形状与 array1 一致;

实现:numpy.isin() 调用了 numpy.in1d(),不过 isin() 额外使用了 reshape(),建议使用 isin();

注:更多内容参照官方文档


本文链接: http://www.dtmao.cc/news_show_2000369.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?