我正在尝试找出两个数组之间的差异
arrayA = np.array(['A1', 'A2', 'A3'])
arrayB = np.array(['A1', 'A2', 'A3', 'A4', 'A5', 'A6'])
我正在努力获得
difference = ['A4', 'A5', 'A6']
我该怎么做? 谢谢。
使用numpy的setdiff:
np.setdiff1d(arrayA, arrayB)
另外 - 是否有任何特殊原因需要成为 numpy 数组?您可以简单地使用集合,然后使用减号运算符:
set(arrayA) - set(arrayB)
[i for i in arrayB if i not in arrayA]
您可以使用 python set 功能来实现此目的:
import numpy as np
a = np.array(['A1', 'A2', 'A3'])
b = np.array(['A1', 'A2', 'A3', 'A4', 'A5', 'A6'])
print(set(b)-set(a))
输出:
{'A6', 'A5', 'A4'}
或者只是理解:
import numpy as np
a = np.array(['A1', 'A2', 'A3'])
b = np.array(['A1', 'A2', 'A3', 'A4', 'A5', 'A6'])
print([i for i in b if i not in a])
输出:
['A4', 'A5', 'A6']
正如this很好的答案所指出的,您可以使用
np.setdiff1d()
方法:
import numpy as np
arrayA = np.array(['A1', 'A2', 'A3'])
arrayB = np.array(['A1', 'A2', 'A3', 'A4', 'A5', 'A6'])
print(np.setdiff1d(arrayB, arrayA))
输出
['A4' 'A5' 'A6']
但是元素的顺序不会保留,因为结果将始终按升序排序。观察:
import numpy as np
arrayA = np.array(['A1', 'A2', 'A3'])
arrayB = np.array(['A1', 'A2', 'A3', 'A4', 'A6', 'A5']) # Swapped 5 and 6
print(np.setdiff1d(arrayB, arrayA))
输出:
['A4' 'A5' 'A6']
np.in1d()
方法:
import numpy as np
arrayA = np.array(['A1', 'A2', 'A3'])
arrayB = np.array(['A1', 'A2', 'A3', 'A4', 'A6', 'A5']) # Swapped 5 and 6
print(arrayB[~np.in1d(arrayB, arrayA)])
输出:
['A4' 'A6' 'A5']
您可以使用套装:
difference = list(set(arrayB) - set(arrayA))
输出:
['A4', 'A6', 'A5']