Frage Nur bestimmte Spalten in jeder Zeile in einem numpligen Array abrufen [duplizieren]


Mögliche Duplikate:
numpy: Zugriff auf ein Array nach Spalten 

Ich habe ein Nummernfeld (numpy wird als np importiert)

gona = np.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

Ich kann die Werte der gesamten Spalte der 1. Zeile von gona [1] [:] erhalten.

Array ([4, 5, 6])

Aber wenn ich versuche, alle Werte einer bestimmten Spalte aller Zeilen zu erhalten (ich möchte Werte der ersten Spalte in jeder Zeile), würde ich das gona [:] [1] versuchen. Aber das Ergebnis, das ich daraus bekomme, ist dasselbe wie zuvor.

Was kann der Grund dafür sein? Wie mache ich so etwas in einer Nummer?


14
2018-02-01 16:19


Ursprung


Antworten:


Du willst das eigentlich machen:

>>> a
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> a[:,1]
array([ 2,  5,  8, 11])

a[:] gibt nur das gesamte Array zurück, also dann a[:][1] bringt die zweite Reihe von a. Ich denke, da kommt deine Verwirrung auf.

Sehen Dies Abschnitt der Vorläufiges Numpy Tutorial Weitere Informationen zum Indexieren von mehrdimensionalen Arrays.


33
2018-02-01 16:26



Es scheint eine leichte Verwirrung hinsichtlich der Positionierung der Zahnspangen zu geben, gona[:][1] wählt zuerst alles aus dem Array aus und wählt dann aus diesem Array die zweite Zeile aus. Um bestimmte Spalten auszuwählen, setzen Sie die Indizes in die gleichen eckigen Klammern, getrennt durch ein Komma:

gona = np.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

gona[1,:]
Out[21]: array([4, 5, 6])

gona[:,1]
Out[22]: array([ 2,  5,  8, 11])

gona[:,0]
Out[23]: array([ 1,  4,  7, 10])

Sie können zum Beispiel auch nur einen Zeilenbereich auswählen

gona[0:2,0] # only take the two first rows of the first column
Out[24]: array([2, 5])

6
2018-02-01 16:30



So was:

gona = numpy.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

# List comprehension, just get each element in 'gona', and then get first element in that list
out = [x[0] for x in gona]

print out

Ausgabe:

>>> 
[1, 4, 7, 10]
>>> 

-1
2018-02-01 16:22