首页 > 解决方案 > numpy 相当于 list.index

问题描述

在 Python 中,我可以使用list.index来查找元素的索引,例如[1,2,3,4].index(1)返回0,因为元素1出现在 position 处0。我想用多维数组来做到这一点。也就是说,我希望能够写出类似的东西

x = np.array([[0, 1, 2],
              [3, 4, 5]])
y = np.array([0, 1, 2])
print(x.index(y))

输出应该是0,因为目标元素再次位于第一个位置。

使用内置list.index方法不起作用,因为==numpy 数组的运算符返回一个数组而不是布尔值。并且np.argwhere不做任何广播。我知道我总能做到

idx = 0
while idx < x.shape[0] and (x[idx] != y).any():
  idx += 1
print(idx)

但这感觉太笨拙了!

标签: pythonnumpy

解决方案


有几种方法。按照此示例(在 2 维 numpy 数组中查找匹配行):

>>> np.where((x == y).all(axis=1))
(array([0]),)

推荐阅读