前回に引き続き、NumPyについてのちょっと便利な関数を紹介してます。
setdiff1d()
という関数があります。
まずはサンプルです。
import numpy as np
array1 = np.arange(4)
print(array1)
array2 = np.arange(3)
print(array2)
print(np.setdiff1d(array1, array2))
#次のように出力されます
[0 1 2 3]
[0 1 2]
[3]
[0 1 2 3]
と
[0 1 2]
の差を教えてくれてますね。
ちなみに逆にすると、空の配列が出力されます。
import numpy as np
array1 = np.arange(4)
print(array1)
array2 = np.arange(3)
print(array2)
print(np.setdiff1d(array2, array1))
#次が出力されます。
[0 1 2 3]
[0 1 2]
[]
ちなみに、setdiff1dがあるなら、 setdiff2dがありそうですが、ありません!!
下記のようなやり方でできるようです。(確認はしていません)
https://stackoverflow.com/questions/8317022/get-intersecting-rows-across-two-2d-numpy-arrays