Numpy 暂定教程建议这a[ : :-1]
是一个颠倒的a
. 有人可以解释一下我们是如何到达那里的吗?
我理解这意味着(轴= 0)a[:]
的每个元素。a
根据我的理解,下一步:
应该表示要跳过(或句号)的元素数量。
Numpy 暂定教程建议这a[ : :-1]
是一个颠倒的a
. 有人可以解释一下我们是如何到达那里的吗?
我理解这意味着(轴= 0)a[:]
的每个元素。a
根据我的理解,下一步:
应该表示要跳过(或句号)的元素数量。
它不是 numpy,它是 Python。
在 Python 中,有用于序列/可迭代的切片,其语法如下
seq[start:stop:step] => a slice from start to stop, stepping step each time.
所有参数都是可选的,但:
必须有 a 才能让 Python 将其识别为切片。
step 的负值也可以以相反的顺序复制相同的序列/可迭代:
>>> L = range(10)
>>> L[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
numpy 像任何优秀的 3rd 方库一样遵循“规则”..
>>> a = numpy.array(range(10))
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
看到这个链接
正如其他人所指出的,这是一种 python 切片技术,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
th 个元素向后退到第 th 个元素5
。
切片不包括“端点”(命名为最后一个元素),因此0
向后移动时第 6 行会丢失。
这不是 numpy 特有的,切片a[::-1]
等价于slice(None, None, -1)
,其中第一个参数是开始索引,第二个参数是结束索引,第三个参数是步骤。 None
for start 或 stop 将具有与使用序列的开头或结尾相同的行为,并且-1
for step 将以相反的顺序遍历序列。
您可以使用反向Python 内置:
import numpy as np
bins = np.arange(0.0, 1.1, .1)
for i in reversed(bins):
print(i)