warum brauchen wir np.squeeze()?
Sehr oft sind arrays drückte mit np.squeeze()
. In der Dokumentation heißt es
Entfernen eindimensionalen Einträge aus der Form.
Aber ich bin immer noch Fragen: Warum sind null und nondimensional Einträge in der Form eines? Oder anders ausgedrückt: Warum tun sich beide a.shape = (2,1)
und (2,)
existieren?
InformationsquelleAutor | 2016-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Neben den mathematischen unterschieden zwischen den beiden Dingen, es ist die Frage der Vorhersagbarkeit. Wenn Ihrem Vorschlag gefolgt wurde, konnten Sie zu keinem Zeitpunkt verlassen Sie sich auf die dimension der Arrays. So einen Ausdruck von der form
my_array[x,y]
würde ersetzt werden müssen durch etwas, das zuerst überprüft wird, obmy_array
ist eigentlich zwei-dimensional und nicht eine implizitesqueeze
irgendwann. Dies würde wahrscheinlich verschleiern code weit mehr als die gelegentlichesqueeze
, die nicht eine klar definierte Sache.Tatsächlich, es könnte sogar sein, sehr schwer zu sagen, die Achse wurde entfernt, was zu einer ganzen Reihe von neuen Problemen.
In den Geist der Das Zen of Python, auch
Explicit is better than implicit
können wir auch sagen, wir sollten lieber explizitesqueeze
implizite array-Konvertierung.InformationsquelleAutor Christoph
Ein Beispiel für die Bedeutung ist, wenn die Multiplikation von arrays. Zwei 2-dimensionale arrays multiplizieren jeden Wert in einer Zeit,
z.B.
Wenn Sie multiplizieren ein 1d-array ein 2d-array, dann ist das Verhalten anders
Zweitens könnten Sie auch wollen, drücken Sie die früheren Dimensionen z.B. ein.Form = (1,2,2).Form = (2,2)
InformationsquelleAutor benj
diese Ihnen helfen, Fahrt nutzlos, wenn eine dimension wie die Verwendung von arrays
[7,8,9] statt [[[7,8,9]]]
oder [[1,2,3],[4,5,6]] statt [[[[1,2,3],[4,5,6]]]]
prüfen Sie diesen link aus tutorials zeigen zum Beispiel
https://www.tutorialspoint.com/numpy/numpy_squeeze.htm
InformationsquelleAutor N.S
Beim squeeze-a (2,1) array, (2,), die arbeitet als sowohl (2,1) und (1,2):
Kann dies nicht passieren, mit einem (2,1) - array:
InformationsquelleAutor taless