我在NumPy中有两个数组:

a1 = np.array([[0, 0, 0],
               [1, 1, 0],
               [0, 1, 0],
               [1, 1, 1]])

a2 = np.array([1, 2])

我需要知道a1行的索引,其中第1列和第2列(在a2中给出)都等于1。

在上面的例子中,这只是索引为3的最后一行。如果其他列等于1则无关紧要。

有人可以帮助我完成这项工作而不需要大量循环吗?

分析解答

使用简单索引和np.all将为您提供所有元素等于1的行:

np.all(a1[:, a2], axis=1)

这会为您提供符合此条件的行掩码。像这样 :

array([False, False, False,  True])

然后关注@ rahlf23注释,您可以使用np.where查找符合条件的索引,如下所示:

np.where(np.all(a1[:, a2], axis=1))

输出:

array([3])