我有两个具有重叠行的numpy数组:
import numpy as np
a = np.array([[1,2], [1,5], [3,4], [3,5], [4,1], [4,6]])
b = np.array([[1,5], [3,4], [4,6]])
您可以认为:
b
始终是数组a
我想获得一个数组,其中包含a
以外的所有b
行。
即,:
[[1 2]
[3 5]
[4 1]]
考虑到a
和b
可能非常非常大,解决此问题的最有效方法是什么?
答案 0 :(得分:1)
以下是您问题的可能解决方案:
import numpy as np
a = np.array([[1, 2], [3, 4], [3, 5], [4, 1], [4, 6]])
b = np.array([[3, 4], [4, 6]])
a1_rows = a.view([('', a.dtype)] * a.shape[1])
a2_rows = b.view([('', b.dtype)] * b.shape[1])
c = np.setdiff1d(a1_rows, a2_rows).view(a.dtype).reshape(-1, a.shape[1])
print c
我认为使用numpy.setdiff1d是正确的选择