我有一个大小为MxN的bool类型的numpy矩阵A. 比我有一个ROWSx2的数组B,每行包含一对坐标x,y。我想找到矩阵A的坐标列表,其索引包含在数组A中,其值等于True。 我尝试使用此命令,但它返回一个三维数组,我不明白为什么:
intersections = A[A[B] == True]
答案 0 :(得分:1)
IIUC您可以使用A
使用元组版本或切片版本索引B
以获取B
中有效坐标的掩码,如此 -
mask = A[tuple(B.T)] #or A[B[:,0], B[:,1]]
然后,为有效坐标索引B
-
out = B[mask]
示例运行 -
In [43]: A
Out[43]:
array([[False, True, True, True, True],
[ True, True, True, False, True],
[False, False, False, True, False],
[ True, True, True, False, True],
[False, True, False, True, True],
[False, True, True, True, True]], dtype=bool)
In [44]: B
Out[44]:
array([[5, 4],
[1, 3],
[4, 4],
[5, 4]])
In [45]: mask = A[tuple(B.T)]
# Mask of valid B coordinates
In [47]: mask
Out[47]: array([ True, False, True, True], dtype=bool)
In [46]: B[mask]
Out[46]:
array([[5, 4], # [1,3] gone because A[1,3] = False
[4, 4],
[5, 4]])