Numpy.where解决方法

时间:2013-01-01 01:35:16

标签: python numpy

对于我的阵列:
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 个答案:

答案 0 :(得分:4)

您想使用&代替and

np.where((a==5) & (b==16))

在处理numpy数组时,你想使用按位运算符而不是逻辑和。

相关问题