了解numpy.where

时间:2015-04-18 16:36:24

标签: python numpy

我正在阅读numpy.where(condition[, x, y]) documentation,但我无法理解这个小例子:

>>> x = np.arange(9.).reshape(3, 3)
>>> np.where( x > 5 )
Out: (array([2, 2, 2]), array([0, 1, 2]))

有人可以解释一下结果如何?

2 个答案:

答案 0 :(得分:6)

第一个数组(array([2, 2, 2]))是行的索引,第二个数组(array([0, 1, 2]))是那些超过5的值的列。

您可以使用zip来获取确切的值索引:

>>> zip(*np.where( x > 5 ))
[(2, 0), (2, 1), (2, 2)]

或使用np.dstack

>>> np.dstack(np.where( x > 5 ))
array([[[2, 0],
        [2, 1],
        [2, 2]]])

答案 1 :(得分:2)

根据您的情况打印坐标

import numpy as np

x = np.arange(9.).reshape(3, 3)
print x
print np.where( x > 5 )

print x print:

[[ 0.  1.  2.]
 [ 3.  4.  5.]
 [ 6.  7.  8.]]

np.where( x > 5 )打印所有大于5的元素的索引位置

(array([2, 2, 2]), array([0, 1, 2]))

其中2,0 == 6和2,1 == 7和2,2 == 8