我試圖找出兩個陣列之間的區別
arrayA = np.array(['A1', 'A2', 'A3'])
arrayB = np.array(['A1', 'A2', 'A3', 'A4', 'A5', 'A6'])
我試圖得到
difference = ['A4', 'A5', 'A6']
我該怎么做,謝謝
uj5u.com熱心網友回復:
使用 numpy 的setdiff:
np.setdiff1d(arrayA, arrayB)
另外 - 是否有任何特殊原因需要它是一個 numpy 陣列?您可以簡單地使用集合,然后使用減號運算子:set(arrayA) - set(arrayB)
uj5u.com熱心網友回復:
[i for i in arrayB if i not in arrayA]
uj5u.com熱心網友回復:
您可以為此使用 python 集功能:
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']
uj5u.com熱心網友回復:
您可以使用集合:
difference = list(set(arrayB) - set(arrayA))
輸出:
['A4', 'A6', 'A5']
uj5u.com熱心網友回復:
正如這個很好的答案所指出的,您可以使用以下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']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/464532.html
標籤:Python python-3.x
