Mit Standard-Python-Arrays kann ich Folgendes tun:
arr = []
arr.append([1,2,3])
arr.append([4,5,6])
# arr is now [[1,2,3],[4,5,6]]
Allerdings kann ich nicht das Gleiche in Numpy tun. Beispielsweise:
arr = np.array([])
arr = np.append(arr, np.array([1,2,3]))
arr = np.append(arr, np.array([4,5,6]))
# arr is now [1,2,3,4,5,6]
Ich habe auch nachgesehen vstack
, aber wenn ich vstack
ein leeres Array verwende, bekomme ich:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Wie füge ich eine neue Zeile in numpy an ein leeres Array an?
Antworten:
Der Weg, um das gewünschte Array zu "starten", ist:
Welches ist ein leeres Array, aber es hat die richtige Dimensionalität.
Stellen Sie dann sicher, dass Sie entlang der Achse 0 anhängen:
Aber @jonrsharpe ist richtig. Wenn Sie in einer Schleife anhängen, ist es viel schneller, wie in Ihrem ersten Beispiel an eine Liste anzuhängen und am Ende in ein Numpy-Array zu konvertieren, da Sie Numpy wirklich nicht als verwenden beabsichtigt während der Schleife:
Die numpythonische Vorgehensweise hängt von Ihrer Anwendung ab, aber es wäre eher so:
quelle
a = a[:N]
Obwohl ich der festen Überzeugung bin, dass Sie einen Weg finden sollten, dies zu vektorisieren (stellen Sie eine neue Frage mit Ihren Angaben, wenn Sie Hilfe benötigen) oder einfach Listen verwenden sollten, bis die Schleife beendet ist.Hier ist meine Lösung:
quelle
In diesem Fall möchten Sie möglicherweise die Funktionen np.hstack und np.vstack verwenden
Sie können auch die Funktion np.concatenate verwenden.
Prost
quelle
Bei Verwendung einer benutzerdefinierten dtype-Definition funktionierte für mich Folgendes:
quelle
Wenn Sie neue Zeilen für das Array in der Schleife hinzufügen, weisen Sie das Array direkt zum ersten Mal in der Schleife zu, anstatt ein leeres Array zu initialisieren.
Dies ist hauptsächlich nützlich, wenn die Form des Arrays unbekannt ist
quelle
Ich möchte eine for-Schleife machen, aber mit der Methode von askewchan funktioniert sie nicht gut, deshalb habe ich sie geändert.
quelle