NumPy.where 的解决方法

3
对于我的数组:
array([[ 1, 2, 3, 4, 5], #a
[ 1, 3, 5, 7, 9],
[ 5, 10, 15, 20, 25],
[ 2, 4, 6, 8, 5]])

array([[ 1, 2, 3, 4, 16], #b
[ 1, 3, 16, 7, 9],
[ 5, 16, 15, 20, 25],
[ 2, 4, 6, 8, 5]])
我尝试得到 np.where((a==5 and b==16)) 的结果。我期望得到:
Out[1]: (array([0, 1], dtype=int64), array([4, 2], dtype=int64),
因为这是 516 共享相同索引的位置;但实际上我得到了一个

ValueError:具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()

当我尝试 np.where((a.all()==5 and b.any()==16)) 时,我得到了
Out[1]: (array([], dtype=int64),) 有什么想法吗?提前谢谢。
1个回答

4
你应该使用&而不是and:
np.where((a==5) & (b==16))

处理numpy数组时,您应该使用位运算符而不是逻辑和。

更加严谨的答案是 np.where(np.logical_and(a==5, b==5))。 - Christian Alis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接