numpy.where()
尽管阅读了文档,这篇文章和其他帖子,但我仍然无法正确理解.
有人可以提供一维和二维阵列的逐步注释示例吗?
在摆弄了一段时间后,我想出了一些事情,并将它们发布在这里,希望它能帮助别人.
直观地说,np.where
就像问" 告诉我在这个数组中哪些条目满足给定条件 ".
>>> a = np.arange(5,10) >>> np.where(a < 8) # tell me where in a, entries are < 8 (array([0, 1, 2]),) # answer: entries indexed by 0, 1, 2
它还可用于获取满足条件的数组中的条目:
>>> a[np.where(a < 8)] array([5, 6, 7]) # selects from a entries 0, 1, 2
当a是2d数组时,a
返回行idx的数组和col idx的数组:
>>> a = np.arange(4,10).reshape(2,3) array([[4, 5, 6], [7, 8, 9]]) >>> np.where(a > 8) (array(1), array(2))
因此,与1d情况一样,我们可以使用np.where()
获取满足条件的2d数组中的条目:
>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2
阵列([9])
注意,当np.where()
为1d时,a
仍然返回行idx的数组和col idx的数组,但列的长度为1,因此后者是空数组.
这里更有趣.我发现NumPy经常做我希望它做的事情 - 有时我尝试的东西比阅读文档更快.实际上两者的混合是最好的.
我认为你的答案很好(如果你愿意,可以接受它).这只是"额外的".
import numpy as np a = np.arange(4,10).reshape(2,3) wh = np.where(a>7) gt = a>7 x = np.where(gt) print "wh: ", wh print "gt: ", gt print "x: ", x
得到:
wh: (array([1, 1]), array([1, 2])) gt: [[False False False] [False True True]] x: (array([1, 1]), array([1, 2]))
......但是:
print "a[wh]: ", a[wh] print "a[gt] ", a[gt] print "a[x]: ", a[x]
得到:
a[wh]: [8 9] a[gt] [8 9] a[x]: [8 9]