Numpy tentative tutorial表明a[ : :-1]
是反向a
。有人可以解释我们是如何到达那里的吗?
我理解a[:]
表示a
的每个元素(轴= 0)。下一个:
应该表示从我的理解中跳过(或句点)的元素数量。
答案 0 :(得分:15)
它不是numpy,它是Python。
在Python中,有序列/可迭代的切片,它们有以下语法
seq[start:stop:step] => a slice from start to stop, stepping step each time.
所有参数都是可选的,但是必须有:
来让Python将其识别为切片。
对于步骤,负值也可以按相反的顺序复制相同的序列/可迭代:
>>> L = range(10)
>>> L[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
numpy遵循“规则”就像任何好的第三方图书馆一样..
>>> a = numpy.array(range(10))
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
请参阅this link
答案 1 :(得分:8)
正如其他人所说,这是一种蟒蛇切片技术,而numpy恰好也适用。希望这有助于解释它是如何工作的:
最后一步是步长。 1
表示一次一个元素,-
反向执行。
空白表示第一个和最后一个,除非你有一个负步长,在这种情况下它们表示最后和第一个:
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])
第5行给出一个空数组,因为它试图从0
元素向后退一步到5
。
切片不包含'端点'(命名为最后一个元素),因此第6行在向后时会错过0
。
答案 2 :(得分:4)
这不是numpy特有的,切片a[::-1]
相当于slice(None, None, -1)
,其中第一个参数是起始索引,第二个参数是结束索引,第三个参数是步。 None
用于启动或停止将与使用序列的开头或结尾具有相同的行为,而-1
for step将以相反的顺序迭代序列。
答案 3 :(得分:0)
您可以使用reversed内置Python:
import numpy as np
bins = np.arange(0.0, 1.1, .1)
for i in reversed(bins):
print(i)