您可以将第一个数组与第一个值进行比较,将第二个数组与第二个值进行比较,然后找到True 的位置。然后你可以得到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)
如果您可以多次出现,您可以使用nonzero 进行以下操作:
idx_list = ((x == 1) & (y == 4))
idx = idx_list.nonzero()[0]
In [51]: idx
Out[51]: array([3], dtype=int64)
或者如果您需要list 的索引:
In [57]: idx_list.nonzero()[0].tolist()
Out[57]: [3]
你可以在一行中做到这一点:
idx = ((x == 1) & (y == 4)).nonzero()[0]