无法理解np.where(array1 == array2)的结果

时间:2017-11-13 07:24:27

标签: python numpy

我的代码如下:

import numpy as np
a=np.array([[0., 4., 1.0],[2., 3., 2.0]])
argm=a.argmax(axis=0)
m=a[argm,np.arange(3)]
print (np.where(a == m))

我无法理解结果:

(array([0, 1, 1], dtype=int64), array([1, 0, 2], dtype=int64))
任何人都可以解释一下吗? 非常感谢你!

1 个答案:

答案 0 :(得分:4)

你的a和m阵列看起来像这样:

In [2]: a
Out[2]: 
array([[ 0.,  4.,  1.],
       [ 2.,  3.,  2.]])

In [5]: m
Out[5]: array([ 2.,  4.,  2.])

这是a == m

的结果
In [7]: a == m
Out[7]: 
array([[False,  True, False],
       [ True, False,  True]], dtype=bool)

您可以将np.where(a==m)的结果视为返回的坐标对:它所在的第一个True位于第0行(如第一个返回的数组中所示),第1列(每秒一次)一),你可以自己验证。第二个是在第1行第0列。同样是在第3行。

这是否足够清楚?

您可能还想查看numpy.nonzero的文档,这是numpy.where在给出单个参数时折叠的内容。