2012-12-05 18 views
9

Es sei zu Ende haben wir die folgende Reihe:Get Array-Elemente aus dem Index

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

Jetzt möchte ich von den Elementen für den Zugriff auf Index 4 bis zum Ende:

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

Wenn ich das tun , der resultierende Vektor fehlt das letzte Element, jetzt gibt es fünf Elemente statt sechs, warum passiert es, und wie kann ich das letzte Element bekommen, ohne es anzuhängen?

Erwarteter Ausgang:

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

Vielen Dank im Voraus

Antwort

21

The [:-1] entfernt das letzte Element. Statt

a[3:-1] 

Schreib

a[3:] 

Sie können bis auf Python Slicing-Notation lesen Sie hier: Explain Python's slice notation

NumPy Slicing ist eine Erweiterung davon. Das NumPy-Tutorial hat eine gewisse Reichweite: Indexing, Slicing and Iterating.

+0

Das hat in der Tat funktioniert, danke, ich versuche einige Matlab-Code in Python/Numpy zu konvertieren, und diese Referenz [NumPy fot Matlab Benutzer] (http://www.scipy.org/NumPy_for_Matlab_Users) vermisst einige wichtige Probleme als Indizierung und Slicing. –

+0

@Andfoy: Ich würde empfehlen, das NumPy Tutorial zu lesen, mit dem ich verlinkt bin. Es ist nicht perfekt, aber sollte ein guter Anfang sein. – NPE

+1

Gibt es ein Objekt oder einen anderen "Index", der dorthin gehen kann, wo -1 steht, damit er sich wie "a [3:]" verhält? Ich finde oft, dass es den Code vereinfachen würde, den ich schreibe. – Brian