假设我有这些二维数组 A
和 B
。
如何从 A
中删除 B
中的元素。 (集合论补:AB)
A=np.asarray([[1,1,1], [1,1,2], [1,1,3], [1,1,4]])
B=np.asarray([[0,0,0], [1,0,2], [1,0,3], [1,0,4], [1,1,0], [1,1,1], [1,1,4]])
#output = [[1,1,2], [1,1,3]]
更准确地说,我想做这样的事情。
data = some numpy array
label = some numpy array
A = np.argwhere(label==0) #[[1 1 1], [1 1 2], [1 1 3], [1 1 4]]
B = np.argwhere(data>1.5) #[[0 0 0], [1 0 2], [1 0 3], [1 0 4], [1 1 0], [1 1 1], [1 1 4]]
out = np.argwhere(label==0 and data>1.5) #[[1 1 2], [1 1 3]]
原文由 Jee Seok Yoon 发布,翻译遵循 CC BY-SA 4.0 许可协议
基于
this solution
到Find the row indexes of several values in a numpy array
,这是一个基于 NumPy 的解决方案,内存占用更少,在处理大型数组时可能会有所帮助 -样品运行 -
大型阵列的运行时测试 -
基于
broadcasting
解决方案的计时 -基于较少内存占用的解决方案的计时 -
进一步提升性能
in1d_approach
通过将每一行视为索引元组来减少每一行。我们可以通过使用np.dot
引入矩阵乘法来更有效地做同样的事情,就像这样 -让我们在更大的阵列上与之前的相比进行测试 -