Numpy tentative tutorial暗示a[ : :-1]
是反轉的a
。有人能向我解釋我們是如何到達那裏的?numpy中的反轉數組?
我知道a[:]
意味着每個元素的a
(軸= 0)。下一個:
應表示根據我的理解跳過(或週期)的元素數。
Numpy tentative tutorial暗示a[ : :-1]
是反轉的a
。有人能向我解釋我們是如何到達那裏的?numpy中的反轉數組?
我知道a[:]
意味着每個元素的a
(軸= 0)。下一個:
應表示根據我的理解跳過(或週期)的元素數。
正如其他人已經指出的那樣,這是一種蟒蛇切片技術,而numpy就是如此。希望這有助於解釋它是如何工作的:
最後一位是stepize。 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])
,因爲它試圖從0
個向後步驟5行給出一個空數組元素到5
th。
該切片不包括'端點'(命名爲最後一個元素),因此第6行在向後倒轉時未命中0
。
這不是特定於numpy的,片a[::-1]
相當於slice(None, None, -1)
,其中第一個參數是開始索引,第二個參數是結束索引,第三個參數是步驟。 None
用於開始或停止將具有與使用序列的開始或結束相同的行爲,並且步驟-1
將以相反的順序遍歷序列。
它不是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])
見http://stackoverflow.com/questions/509211/the-python-slice-notation - 這是蟒蛇正確,但numpy的服從所有的約定是個不錯的第3第三方包。 – mgilson
另請參閱http://stackoverflow.com/a/4371049/875127,瞭解numpy中的基本切片如何返回視圖而不是原始數組的副本。 –