[0]在numpy.where(y_euler< 0.0)[0]中的作用是什么

时间:2016-09-11 14:42:41

标签: python arrays numpy

这又有什么区别:

idx_negative_euler = numpy.where(y_euler<0.0)[0]

和此:

idx_negative_euler = numpy.where(y_euler<0.0)[0][0]

我意识到这会返回数组y_euler为负数的索引数组,但是我根本无法弄清楚结尾处的[0][0][0]是什么应该这样做。

我找不到任何关于此的文件(我甚至不确定要搜索什么)。我已经查看了numpy.where文档,但没有帮助。

2 个答案:

答案 0 :(得分:1)

[0]表示&#34;获取序列的第一项。&#34;例如,如果您有此列表:

x = [5, 7, 9]

然后x[0]将是该序列的第一项:5。

numpy.where()返回一个序列。将[0]放在该表达式的末尾将获得该序列中的第一项。

[0][0]表示&#34;获取序列中的第一项(它本身也是一个序列),然后获取中的第一项序列&#34;。因此,如果numpy.where()返回了列表列表,[0][0]将获得第一个列表中的第一项。

答案 1 :(得分:0)

制作一个简单的1d数组:

In [60]: x=np.array([0,1,-1,2,-1,0])

返回数组的元组(...,),每个维度一个:

In [61]: np.where(x<0)
Out[61]: (array([2, 4], dtype=int32),)

从元组中拉出第一个(仅此处)元素

In [62]: np.where(x<0)[0]
Out[62]: array([2, 4], dtype=int32)

获取索引数组的第一个元素

In [63]: np.where(x<0)[0][0]
Out[63]: 2

where返回的整个元组可用于索引数组。

In [64]: x[np.where(x<0)]
Out[64]: array([-1, -1])

x[2,4]x[([2,4],)]执行相同的索引。

当处理2d或更高的dim数组时,tuple值的有用性变得更加明显。在这种情况下,np.where(...)[0]将给出'rows'索引数组。但是where(...)[0]在1d情况下最常见,通常不需要元组层。