你可以将第一个数组与第一个值进行比较,将第二个数组与第二个值进行比较,然后找到两者都为
True
的位置。然后你可以使用
argmax
获取第一个
True
出现的索引:
x = np.array([0, 1, 1, 1, 3, 4, 5, 5, 5])
y = np.array([0, 2, 3, 4, 2, 1, 3, 4, 5])
idx = ((x == 1) & (y == 4)).argmax()
In [35]: idx
Out[35]: 3
In [36]: x == 1
Out[36]: array([False, True, True, True, False, False, False, False, False], dtype=bool)
In [37]: y == 4
Out[37]: array([False, False, False, True, False, False, False, True, False], dtype=bool)
如果您可以有多个出现,则可以使用以下方式使用
非零
:
idx_list = ((x == 1) & (y == 4))
idx = idx_list.nonzero()[0]
In [51]: idx
Out[51]: array([3], dtype=int64)
或者,如果您需要索引列表:
<code>In [57]: idx_list.nonzero()[0].tolist()
Out[57]: [3]
</code>
您可以用一行代码实现这个功能:
idx = ((x == 1) & (y == 4)).nonzero()[0]
list()
将最后的输出强制转换为列表。这是目前为止最正确的答案。 - Eddo Hintoso