Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy.where()详细、分步的解释/示例_Python_Numpy_Scipy - Fatal编程技术网

Python numpy.where()详细、分步的解释/示例

Python numpy.where()详细、分步的解释/示例,python,numpy,scipy,Python,Numpy,Scipy,尽管阅读了,但我仍然无法正确理解numpy.where(),并且 有人能提供一步一步的1D和2D阵列的注释示例吗?经过一段时间的摆弄,我找到了答案,并将它们发布在这里,希望它能帮助其他人 直观地说,np.where就像在问“告诉我在这个数组中,条目在哪里满足给定条件” 与1d情况一样,我们可以使用np.where()在2d数组中获取满足以下条件的条目: >>> a[np.where(a < 8)] array([5, 6, 7]) # selects

尽管阅读了,但我仍然无法正确理解
numpy.where()
,并且


有人能提供一步一步的1D和2D阵列的注释示例吗?

经过一段时间的摆弄,我找到了答案,并将它们发布在这里,希望它能帮助其他人

直观地说,
np.where
就像在问“告诉我在这个数组中,条目在哪里满足给定条件”

与1d情况一样,我们可以使用
np.where()
在2d数组中获取满足以下条件的条目:

>>> a[np.where(a < 8)] 
array([5, 6, 7])          # selects from a entries 0, 1, 2
>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2
数组([9])



注意,当
a
为1d时,
np.where()
仍然返回一个行idx数组和列idx数组,但列的长度为1,因此后者是空数组。

这里有一点有趣。我发现NumPy经常做我希望它能做的事情——有时候,对我来说,尝试一些东西比阅读文档要快。实际上,两者的混合是最好的

我认为你的答案很好(如果你愿意,也可以接受)。这只是“额外的”

给出:

wh:  (array([1, 1]), array([1, 2]))
gt:  [[False False False]
      [False  True  True]]
x:   (array([1, 1]), array([1, 2]))
a[wh]:  [8 9]
a[gt]   [8 9]
a[x]:   [8 9]
。。。但是:

print "a[wh]: ", a[wh]
print "a[gt]  ", a[gt]
print "a[x]:  ", a[x]
给出:

wh:  (array([1, 1]), array([1, 2]))
gt:  [[False False False]
      [False  True  True]]
x:   (array([1, 1]), array([1, 2]))
a[wh]:  [8 9]
a[gt]   [8 9]
a[x]:   [8 9]

我一直在努力理解np.where在2d上的用法,直到我找到您的答案“当a是2d数组时,np.where()返回行idx数组和列idx数组:”。谢谢。读了三遍文档后,我觉得自己很傻,但仍然没有解决这个难题。where(2d_数组),谢谢你把这个问题解决了!你应该接受你自己的答案。e:哦,关门了。不应该,真遗憾,这家店关门了。然而,我想在这个完整的答案中添加另一个
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]])
将返回
数组([[4,8,6],[9,2,1]])
。注意x和y的哪些元素是根据真/假选择的。这个答案中给出的解释只是np.where的一个特例。根据文档,当只提供了
条件时,此函数是
np.asarray(condition).nonzero()的缩写。
a[wh]:  [8 9]
a[gt]   [8 9]
a[x]:   [8 9]