查看numpy.setdiff1d()函数原型:
setdiff1d(ar1, ar2, assume_unique=False)
函数作用:
setdiff1d的作用是求两个数组的集合差。返回' ar1 '中不在' ar2 '中的唯一值。
=============================================================
参数解释:
ar1:输入数组
ar2:输入比较数组
assume_unique:如果为True,则假设输入数组的元素都是惟一的,可以加快计算速度,不会去掉数组ar1中重复的元素,也不进行排序。如果为False,函数进行去重操作,还会对元素排序,将会降低程序效率,assume_unique的值默认是false。
=============================================================
函数的返回值:
返回在' ar1 '中没有在' ar2 '中的数组元素。当' assume_unique=False '时,返回的元素是去重的排序的,如果为True,返回的是不排序,不去重的。
造成这个的原因是setdiff1d()函数去重时使用了numpy中的unique()函数,unique()的返回值是去重的,排序的。
=============================================================
例子:
import numpy as np
a = np.array([2, 2, 1, 4, 3])
b = np.array([3, 4, 5, 6])
# assume_unique默认值是False,去掉ar1中重复的2
print(np.setdiff1d(a, b))
# 将assume_unique的值设为True,不进行去重操作
print(np.setdiff1d(a, b, assume_unique=True))
输出:
[1 2]
[2 2 1]