这又有什么区别:
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
文档,但没有帮助。
答案 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情况下最常见,通常不需要元组层。