Ich habe ein numpy Array mit:
[1, 2, 3]
Ich möchte ein Array erstellen, das Folgendes enthält:
[1, 2, 3, 1]
Das heißt, ich möchte das erste Element am Ende des Arrays hinzufügen.
Ich habe das Offensichtliche versucht:
np.concatenate((a, a[0]))
Aber ich bekomme eine Fehlermeldung ValueError: arrays must have same number of dimensions
Ich verstehe das nicht - die Arrays sind beide nur 1d Arrays.
np.insert([1,2,3], 3, 1)
Antworten:
append()
Erstellt ein neues Array, das das alte Array mit dem angehängten Element sein kann.Ich denke, es ist normaler, die richtige Methode zum Hinzufügen eines Elements zu verwenden:
quelle
a
Array nicht. Es wird jedoch ein neues modifiziertes Array zurückgegeben. Wenn also einea
Änderung erforderlich ist,a = numpy.append(a,a[0])
muss diese verwendet werden.np.append
verwendetnp.concatenate
. Es stellt nur sicher, dass das Addon eine Dimension hat. Der OP-Fehler war dera[0]
hat 0 Dimensionen.a.append(1)
,a.add(1)
oder sogar etwas Analoges zu Listen wiea + [1]
Wenn Sie hin und wieder nur einmal oder einmal anhängen, sollte die Verwendung
np.append
in Ihrem Array in Ordnung sein. Der Nachteil dieses Ansatzes besteht darin, dass bei jedem Aufruf Speicher für ein völlig neues Array zugewiesen wird. Wenn Sie ein Array für eine erhebliche Anzahl von Samples vergrößern, ist es besser, das Array entweder vorab zuzuweisen (wenn die Gesamtgröße bekannt ist) oder an eine Liste anzuhängen und anschließend in ein Array zu konvertieren.Verwenden von
np.append
:Verwenden der Python-Liste, die anschließend in ein Array konvertiert wird:
Numpy-Array vorab zuweisen:
Wenn die endgültige Größe unbekannt ist, ist die Vorzuweisung schwierig. Ich habe versucht, die Vorzuweisung in Blöcken von 50 vorzunehmen, aber es kam der Verwendung einer Liste nicht nahe.
quelle
a[0]
ist kein Array, es ist das erste Element vona
und hat daher keine Dimensionen.Versuchen Sie
a[0:1]
stattdessen, das erste Elementa
innerhalb eines einzelnen Elementarrays zurückzugeben .quelle
Versuche dies:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
Bei der Verkettung müssen beide Elemente Numpy-Arrays sein. a [0] ist jedoch kein Array. Deshalb funktioniert es nicht.
quelle
np.concatenate((a, [a[0]]))
. Die Liste wird ohnehin automatisch zu einem Array-Typ heraufgestuft, wodurch Sie einige Eingaben sparen.Dieser Befehl,
ändert das
a
Array nicht. Es wird jedoch ein neues modifiziertes Array zurückgegeben. Wenn also einea
Änderung erforderlich ist, muss Folgendes verwendet werden.quelle
quelle
Dies mag etwas übertrieben sein, aber ich verwende die
np.take
Funktion immer für jede Rundum-Indizierung:quelle
Sagen wir,
a=[1,2,3]
und Sie möchten, dass es so ist[1,2,3,1]
.Sie können die integrierte Append-Funktion verwenden
Hier ist 1 ein int, es kann eine Zeichenfolge sein und es kann zu den Elementen im Array gehören oder nicht. Drucke:
[1,2,3,1]
quelle
Wenn Sie ein Element hinzufügen möchten, verwenden Sie
append()
a = numpy.append(a, 1)
In diesem Fall fügen Sie die 1 am Ende des Arrays hinzuWenn Sie ein Element einfügen möchten, verwenden Sie
insert()
a = numpy.insert(a, index, 1)
In diesem Fall können Sie die 1 an die gewünschte Stelle setzen und mithilfe des Index die Position im Array festlegen.quelle