假设我们有以下二维数组:
>>> A
array([[1, 1],
[2, 2],
[3, 1]])
>>> B
array([[2, 1],
[1, 2],
[3, 1],
[4, 2]])
我想测试A的行在B的行中的成员关系。对于A的单行,我们可以使用以下公式测试它在B中的成员关系:
np.any(np.all(A[index] == B, axis=1))
我想一次对A的所有行执行此操作,而不循环遍历索引。结果应该是:
desired_result = array([False, False, True])
我们如何以广播的方式检索这个结果(而不循环遍历A的行)?
1条答案
按热度按时间fnvucqvd1#
正如您所猜测的那样,您可以使用广播以矢量化的方式将
A
的每一行与B
的每一行进行比较:说明
为了更好地理解这是如何工作的,让我们使用一个修改过的问题:
其中,我们期望在
B
中的第1行和第4行找到A[0]
([4, 2]
)。然后:显示
A[0] == B[1]
和A[0] == B[4]
(第一列),以及A[3] == B[3]
(最后一列)。此时,只有
.any(axis=0)
完成作业以产生所需的结果。