我在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])