当前位置:  开发笔记 > 编程语言 > 正文

numpy.where()详细的,逐步的解释/示例

如何解决《numpy.where()详细的,逐步的解释/示例》经验,为你挑选了2个好方法。

numpy.where()尽管阅读了文档,这篇文章和其他帖子,但我仍然无法正确理解.

有人可以提供一维和二维阵列的逐步注释示例吗?



1> Alexandre Ho..:

在摆弄了一段时间后,我想出了一些事情,并将它们发布在这里,希望它能帮助别人.

直观地说,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,因此后者是空数组.


当我在2d上使用时,我一直在努力理解np.where直到我找到你的答案"当a是2d数组时,np.where()返回一个行idx的数组,以及一个col idx的数组:".感谢那.
很遗憾这是关闭的.但是,我想在这个完整的答案中添加"np.where"的另一个功能.该函数还可以根据条件从x和y数组中选择元素.此评论中的空间有限,但请参阅:`np.where(np.array([[False,False,True],[True,False,False]]),np.array([[8,2,6],[ 9,5,0]]),np.array([[4,8,7],[3,2,1]]))`将返回`array([[4,8,6],[9, 2,1]])`.注意根据True/False选择x和y的哪些元素

2> uhoh..:

这里更有趣.我发现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]

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有