In [1]: import numpy as np
In [2]: a = np.arange(5)
In [3]: a
Out[3]: array([0, 1, 2, 3, 4])
In [4]: a[0:5:1]
Out[4]: array([0, 1, 2, 3, 4])
In [5]: a[0:5:-1]
Out[5]: array([], dtype=int64)
In [6]: a[5:0:-1]
Out[6]: array([4, 3, 2, 1])
In [7]: a[::-2]
Out[7]: array([4, 2, 0])
正如其他人所指出的,这是一种python切片技术,numpy也正是如此。希望这有助于解释它的工作原理:
最后一点是步长。
1
表示一次一个元素,而-
则相反。空白表示第一个和最后一个,除非步长为负,在这种情况下,空白表示最后一个和第一个:
第5行给出一个空数组,因为它试图从第
0
个元素向后退到第5
个元素。切片不包含“endpoint”(命名为最后一个元素),因此当返回时,第6行未命中
0
。这不是特定于numpy的,片} ,其中第一个参数是开始索引,第二个参数是结束索引,第三个参数是步骤。
a[::-1]
相当于^{None
for start或stop的行为与使用序列的开头或结尾的行为相同,而-1
for step将以相反的顺序在序列上迭代。不是努比,是Python。
在Python中,sequence/iterable有一些片段,其语法如下
所有参数都是可选的,但是必须有一个
:
才能让Python将其识别为一个片段。对于step,负值也可以按相反的顺序复制相同的序列/iterable:
而numpy像任何一个好的第三方图书馆一样遵循这个“规则”。。
见this link
相关问题 更多 >
编程相关推荐