如何获得两个 numpy 数组之间的交点索引?我可以通过 intersect1d
获得相交值:
import numpy as np
a = np.array(xrange(11))
b = np.array([2, 7, 10])
inter = np.intersect1d(a, b)
# inter == array([ 2, 7, 10])
但是我怎样才能将索引放入 a
中的值 inter
?
原文由 invis 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
in1d
生成的布尔数组来索引arange
。反转a
以便索引与值不同:intersect1d
仍然返回相同的值…但是
in1d
返回一个布尔数组:可用于索引范围:
不过,为了简化上述内容,您可以使用
nonzero
这可能是最正确的方法,因为它返回一个统一列表的元组X
,Y
…坐标:或者,等效地:
结果可以用作与
a
形状相同的数组的索引,没有问题。但请注意,在许多情况下,仅使用布尔数组本身是有意义的,而不是将其转换为一组非布尔索引。
最后,您还可以将布尔数组传递给
argwhere
,这会产生形状略有不同的结果,不适合索引,但可能对其他用途有用。