Python中的np.setdiff1d()函数详解
作者:对许
Python中的np.setdiff1d()函数可用于找出两个序列集合中元素的差异,下面通过示例代码给大家详细讲解,感兴趣的朋友跟随小编一起看看吧
Python中的np.setdiff1d()
函数可用于找出两个序列集合中元素的差异
API及参数如下:
np.setdiff1d(ar1,ar2,assume_unique):找出序列1在序列2中的差异,并返回序列1中不在序列2中的元素
- ar1:输入数组
- ar2:输入比较数组
- assume_unique:是否假设唯一,默认为False,输出去重且元素从小到大排序,如果为True,则不会去重,输出顺序保持原来的顺序
以下是一个使用示例:
import numpy as np a = np.array([3, 2, 2, 1]) b = np.array([5, 4, 3, 3]) # a = [3, 2, 2, 1] # b = [5, 4, 3, 3] c = np.setdiff1d(a, b) print(c) # [1 2] c = np.setdiff1d(a, b, assume_unique=True) print(c) # [2 2 1]
补充:python numpy中setdiff1d的用法
一、函数解释
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()
到此这篇关于Python中的np.setdiff1d()函数的文章就介绍到这了,更多相关Python np.setdiff1d()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!