Den*_* S. 10 python arrays numpy
Numpy试探性教程表明这a[ : :-1]是相反的a.有人可以解释我们是如何到达那里的吗?
我理解这a[:]意味着每个元素a(轴= 0).接下来:应该表示从我的理解中跳过(或句点)的元素数量.
pra*_*nsg 15
它不是numpy,它是Python.
在Python中,有序列/可迭代的切片,它们有以下语法
seq[start:stop:step] => a slice from start to stop, stepping step each time.
Run Code Online (Sandbox Code Playgroud)
所有参数都是可选的,但是:Python必须将其识别为切片.
对于步骤,负值也可以以相反的顺序制作相同序列/可迭代的副本:
>>> L = range(10)
>>> L[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)
和numpy一样遵循"规则",就像任何好的第三方图书馆一样.
>>> a = numpy.array(range(10))
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
Run Code Online (Sandbox Code Playgroud)
看到这个链接
正如其他人所指出的那样,这是一种蟒蛇切片技术,而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])
Run Code Online (Sandbox Code Playgroud)
第5行给出一个空数组,因为它试图从第0th个元素向后退一步5.
切片不包括'端点'(命名为最后一个元素),因此第6行在0向后时未命中.
这不是特定于numpy的,slice a[::-1]等效于slice(None, None, -1),其中第一个参数是开始索引,第二个参数是结束索引,第三个参数是步骤。 Nonefor start或stop将具有与使用序列的开头或结尾相同的行为,而-1step则以相反的顺序遍历该序列。
| 归档时间: |
|
| 查看次数: |
18955 次 |
| 最近记录: |