从两个numpy 2D数组中提取不同的行

时间:2017-03-21 14:34:00

标签: numpy row extract

我从矩阵A(100,40)生成了一个新的随机行矩阵B(50,40):

B = A[np.random.randint(0,100,size=50)]  # it works fine.

现在,我想从A中获取不在矩阵B中的行。

C = A not in B   # pseudocode.

3 个答案:

答案 0 :(得分:1)

这应该做的工作:

import numpy as np
A=np.random.randint(5,size=[100,40])
l=np.random.choice(100, size=50, replace=False)
B = A[l]
C= A[np.setdiff1d(np.arange(0,100),l)]

l存储所选行,而对于C,您可以使用l的补码。然后C是必需的矩阵。

请注意,我设置了l=np.random.choice(100, size=50, replace=False)以避免替换。如果您使用np.random.randint(0,100,size=50),则可能会重复行,因为随机选择了相同的数字。

答案 1 :(得分:0)

通过这个问题,Check whether each row of a matrix is in another matrix [Python]进行了解释。首先得到行的索引存在于B中,然后从整个A索引得到差异。最后使用差异选择行。

$("#closebutton").click(function () {
  $('#megasubmenu').hide();
  $('#megasubmenu').closest('li.level0').find('a.level0').removeClass("megahover");
});

答案 2 :(得分:0)

numpy_indexed包(免责声明:我是它的作者)为所有这些操作提供了高效的矢量化功能。

import numpy_indexed as npi
C = npi.difference(A, B)