2012-12-05 121 views
9

假設我們有以下數組:獲得來自指數數組元素結束

import numpy as np 
a = np.arange(1, 10) 
a = a.reshape(len(a), 1) 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6], 
     [7], 
     [8], 
     [9]]) 

現在,我要訪問從索引4的元素到最後:

a[3:-1] 
array([[4], 
     [5], 
     [6], 
     [7], 
     [8]]) 

當我這樣做,結果向量缺少最後一個元素,現在有五個元素而不是六個,爲什麼會發生,以及如何獲取最後一個元素而不追加它?

預期輸出:

array([[4], 
     [5], 
     [6], 
     [7], 
     [8], 
     [9]]) 

預先感謝

回答

21

[:-1]移除的最後一個元素。取而代之的

a[3:-1] 

a[3:] 

您可以在這裏的Python切片表示法讀了起來:Explain Python's slice notation

NumPy的切片就是一個很好的延伸。 NumPy教程有一些覆蓋範圍:Indexing, Slicing and Iterating

+0

確實有效,謝謝,我試圖將一些matlab代碼轉換爲python/numpy,並且該參考指南[NumPy fot Matlab用戶](http://www.scipy.org/NumPy_for_Matlab_Users)忽略了一些重要問題作爲索引和切片。 –

+0

@Andfoy:我建議閱讀我鏈接到的NumPy教程。這並不完美,但應該是一個好開始。 – NPE

+1

是否有一個對象或其他「索引」可以在-1的位置使其表現得像'a [3:]'?我經常發現它會簡化我編寫的代碼。 – Brian