Weiß jemand, wie man eine Spalte aus einem mehrdimensionalen Array in Python extrahiert?
240
Weiß jemand, wie man eine Spalte aus einem mehrdimensionalen Array in Python extrahiert?
>>> import numpy as np
>>> A = np.array([[1,2,3,4],[5,6,7,8]])
>>> A
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> A[:,2] # returns the third columm
array([3, 7])
Siehe auch: "numpy.arange" und "reshape", um Speicher zuzuweisen
Beispiel: (Zuweisen eines Arrays mit Formung der Matrix (3x4))
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)
[row, col]
. Das Komma wird getrennt.Könnte es sein, dass Sie ein NumPy-Array verwenden ? Python verfügt über das Array- Modul, das jedoch keine mehrdimensionalen Arrays unterstützt. Normale Python-Listen sind ebenfalls eindimensional.
Wenn Sie jedoch eine einfache zweidimensionale Liste wie diese haben:
Dann können Sie eine Spalte wie folgt extrahieren:
Extrahieren der zweiten Spalte (Index 1):
Oder alternativ einfach:
quelle
Wenn Sie ein Array wie haben
Dann extrahieren Sie die erste Spalte folgendermaßen:
Das Ergebnis sieht also so aus:
quelle
Hör zu!
Es ist dasselbe wie oben, außer dass es irgendwie ordentlicher ist, dass die Zip-Datei die Arbeit erledigt, aber einzelne Arrays als Argumente benötigt. Die Syntax * a entpackt das mehrdimensionale Array in einzelne Array-Argumente
quelle
a2 = zip(*a); a2 = list(a2); a2[0]
Die Kartenfunktion in Python ist ein weiterer Weg.
quelle
Wenn Sie die zweite Spalte möchten, können Sie verwenden
quelle
arange()
in Python3 außerhalb von numpy finden. Jemand?quelle
Der Itemgetter-Operator kann auch helfen, wenn Sie Python mit Kartenreduzierung anstelle von Listenverständnis für ein wenig Abwechslung mögen!
quelle
Sie können dies auch verwenden:
Hinweis: Dies funktioniert nicht für eingebaute Arrays und ist nicht ausgerichtet (z. B. np.array ([[1,2,3], [4,5,6,7]]).
quelle
Ich denke, Sie möchten eine Spalte aus einem Array wie einem Array unten extrahieren
Nun, wenn Sie die dritte Spalte im Format erhalten möchten
Dann müssen Sie zuerst das Array zu einer Matrix machen
Und jetzt können Sie elementweise Berechnungen durchführen, ähnlich wie Sie es in Excel tun würden.
quelle
Nehmen wir an, wir haben eine
n X m
Matrix (n
Zeilen undm
Spalten) mit 5 Zeilen und 4 SpaltenUm die Spalten in Python zu extrahieren, können wir das Listenverständnis wie folgt verwenden
Sie können 4 durch eine beliebige Anzahl von Spalten in Ihrer Matrix ersetzen. Das Ergebnis ist
[ [1,5,9,13,17],[2,10,14,18],[3,7,11,15,19],[4,8,12,16,20] ]
quelle
quelle
Ein weiterer Weg mit Matrizen
quelle
Wenn Sie in Python ein zweidimensionales Array haben (nicht numpy), können Sie alle Spalten wie folgt extrahieren:
Das Ausführen dieses Codes ergibt Folgendes:
Natürlich können Sie eine einzelne Spalte von Index extrahieren (zB
columns[0]
)quelle
Trotz der Verwendung
zip(*iterable)
zum Transponieren einer verschachtelten Liste können Sie auch Folgendes verwenden, wenn die Länge der verschachtelten Listen variiert:Ergebnisse in:
Die erste Spalte lautet also:
quelle
Na ein bisschen spät ...
Wenn es auf die Leistung ankommt und Ihre Daten rechteckig sind, können Sie sie auch in einer Dimension speichern und durch regelmäßiges Schneiden auf die Spalten zugreifen, z.
Das Schöne ist, dass dies sehr schnell geht. Jedoch negative Indizes funktionieren hier nicht! Sie können also nicht über den Index -1 auf die letzte Spalte oder Zeile zugreifen.
Wenn Sie eine negative Indizierung benötigen, können Sie die Accessor-Funktionen ein wenig optimieren, z
quelle
Wenn Sie mehr als nur eine Spalte erfassen möchten, verwenden Sie einfach Slice:
quelle
Ich bevorzuge den nächsten Hinweis: Die Matrix benennen
matrix_a
und verwendencolumn_number
, zum Beispiel:quelle
Verwenden Sie einfach transpose (), dann können Sie die Spalten so einfach wie Zeilen erhalten
quelle
Alle Spalten aus einer Matrix in eine neue Liste:
quelle