2012-12-05 22 views
9

Załóżmy, że mamy następującą tablicę:Get elementy tablicy z indeksu do końca

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]]) 

Teraz chcę uzyskać dostęp do elementów z indeksem 4 do końca:

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

Kiedy mogę to zrobić , wynikowy wektor nie ma ostatniego elementu, teraz jest pięć elementów zamiast sześciu, dlaczego tak się dzieje i jak mogę uzyskać ostatni element bez jego dołączania?

wyjście z oczekiwaniami:

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

góry dzięki

Odpowiedz

21

The [:-1] usuwa ostatni element. Zamiast

a[3:-1] 

zapisu

a[3:] 

można przeczytać na krojenie notacji Python tutaj: Explain Python's slice notation

NumPy krojenie jest przedłużeniem tego. Samouczek NumPy ma pokrycie: Indexing, Slicing and Iterating.

+0

To zadziałało, dziękuję, próbuję przekonwertować jakiś kod Matlaba na Pythona/numpy, a ten przewodnik [NumPy fot Matlab users] (http://www.scipy.org/NumPy_for_Matlab_Users) pomija kilka ważnych problemów jako indeksowanie i krojenie. –

+0

@Andfoy: Polecam lekturę samouczka NumPy, z którym się łączyłem. To nie jest doskonałe, ale powinno być dobrym początkiem. – NPE

+1

Czy istnieje obiekt lub inny "indeks", który może przejść tam, gdzie -1, aby zachowywał się jak 'a [3:]'? Często uważam, że to uprości kod, który piszę. – Brian

Powiązane problemy