Ich kann nicht herausfinden, wie ein Array oder eine Matrix so verwendet wird, wie ich normalerweise eine Liste verwenden würde. Ich möchte ein leeres Array (oder eine leere Matrix) erstellen und dann jeweils eine Spalte (oder Zeile) hinzufügen.
Im Moment kann ich nur so Folgendes finden:
mat = None
for col in columns:
if mat is None:
mat = col
else:
mat = hstack((mat, col))
Wenn es eine Liste wäre, würde ich so etwas tun:
list = []
for item in data:
list.append(item)
Gibt es eine Möglichkeit, diese Art der Notation für NumPy- Arrays oder -Matrizen zu verwenden?
.empty()
bedeutet also, dass man zufällige Werte in den Zellen finden kann, aber das Array wird schneller erstellt als zB mit.zeros()
?Ein NumPy-Array ist eine ganz andere Datenstruktur als eine Liste und kann auf unterschiedliche Weise verwendet werden. Ihre Verwendung von
hstack
ist möglicherweise sehr ineffizient. Jedes Mal, wenn Sie es aufrufen, werden alle Daten im vorhandenen Array in ein neues kopiert. (Dieappend
Funktion hat das gleiche Problem.) Wenn Sie Ihre Matrix spaltenweise aufbauen möchten, sollten Sie sie am besten in einer Liste belassen, bis sie fertig ist, und sie erst dann in ein Array konvertieren.z.B
item
kann eine Liste, ein Array oder ein beliebiges iterierbaresitem
Element sein , sofern jedes die gleiche Anzahl von Elementen aufweist.In diesem speziellen Fall (
data
ist einige iterierbar, die die Matrixspalten enthält) können Sie einfach verwenden(Beachten Sie auch, dass die Verwendung
list
als Variablenname wahrscheinlich keine gute Vorgehensweise ist, da der integrierte Typ mit diesem Namen maskiert wird, was zu Fehlern führen kann.)BEARBEITEN:
Wenn Sie aus irgendeinem Grund wirklich ein leeres Array erstellen möchten, können Sie es einfach verwenden
numpy.array([])
, aber dies ist selten nützlich!quelle
np.concatenate()
), können Sie Folgendes verwenden :np.empty((0, some_width))
. 0, also wird Ihr erstes Array kein Müll sein.Um ein leeres mehrdimensionales Array in NumPy zu erstellen (z. B. ein 2D-Array
m*n
zum Speichern Ihrer Matrix), falls Sie nicht wissen,m
wie viele Zeilen Sie anhängen werden, und sich nicht um die von Stephen Simmons erwähnten Rechenkosten kümmern (nämlich das Neuerstellen des Arrays ) Array an jedem Anhang) können Sie die Dimension, an die Sie anhängen möchten, auf 0 drücken :X = np.empty(shape=[0, n])
.Auf diese Weise können Sie beispielsweise Folgendes verwenden (hier, von
m = 5
dem wir annehmen, dass wir es beim Erstellen der leeren Matrix nicht wussten, undn = 2
):was dir geben wird:
quelle
Ich habe mir das sehr genau angesehen, weil ich in einem meiner Schulprojekte ein numpy.array als Set verwenden musste und leer initialisiert werden musste ... Ich habe hier auf Stack Overflow keine relevante Antwort gefunden, also habe ich angefangen etwas kritzeln.
Das Ergebnis wird sein:
Daher können Sie ein np-Array wie folgt direkt initialisieren:
Ich hoffe das hilft.
quelle
a=np.array([])
scheint standardmäßigfloat64
Sie können die Append-Funktion verwenden. Für Zeilen:
Für Spalten:
BEARBEITEN
Natürlich würde ich, wie in anderen Antworten erwähnt, nur eine Liste erstellen, sie anhängen und dann in eine konvertieren, es sei denn, Sie bearbeiten die Matrix / das Array jedes Mal, wenn Sie etwas daran anhängen, (z. B. Inversion) Array.
quelle
Wenn Sie die endgültige Größe des Arrays absolut nicht kennen, können Sie die Größe des Arrays folgendermaßen erhöhen:
0
in der ersten Zeile.numpy.append
ist eine andere Option. Es ruftnumpy.concatenate
.quelle
Sie können es anwenden, um jede Art von Array zu erstellen, z. B. Nullen:
quelle
a= [0] * 5
ist die einfache LösungHier ist eine Problemumgehung, damit Numpys eher wie Listen aussehen
AUSGABE: Array ([2., 24.])
quelle
Je nachdem, wofür Sie dies verwenden, müssen Sie möglicherweise den Datentyp angeben (siehe 'dtype'). ).
So erstellen Sie beispielsweise ein 2D-Array mit 8-Bit-Werten (zur Verwendung als Schwarzweißbild geeignet):
Geben Sie für ein RGB-Bild die Anzahl der Farbkanäle in der Form an:
shape=(H,W,3)
Möglicherweise möchten Sie auch eine Nullinitialisierung mit
numpy.zeros
anstelle einer Verwendung in Betracht ziehennumpy.empty
. Siehe den Hinweis hier .quelle
Ich denke, Sie möchten den größten Teil der Arbeit mit Listen erledigen und dann das Ergebnis als Matrix verwenden. Vielleicht ist das ein Weg;
quelle
Ich denke, Sie können ein leeres numpy-Array erstellen wie:
Dieses Format ist nützlich, wenn Sie ein numpy-Array an die Schleife anhängen möchten.
quelle
Um ein leeres NumPy-Array zu erstellen, ohne seine Form zu definieren, gibt es folgende Möglichkeiten:
1.
bevorzugt. weil Sie wissen, dass Sie dies als numpy verwenden werden.
2.
NumPy konvertiert dies anschließend ohne Extra in den Typ np.ndarray
[]
dimionsion
.quelle