Ich habe eine allgemeine Frage, aber niemand kann mir eine Antwort darauf geben, dass ich viel in offiziellen Python-Dokumenten und anderen Quellen wie Bootcamp und Datacamp gesucht habe.
Das Problem ist, dass ich überall gelesen habe, wo dieser Numpy keine heterogenen Datentypen unterstützt ( OFFICIAL DOCS )
Aber wenn ich den Code unten schreibe, funktioniert es gut. Also, wenn numpy heterogene Datentypen nicht unterstützt, warum erlaubt die Codierung dann?
import numpy as np
x = np.array(["hello", 3, 4, 5])
print(a)
Die obigen Anweisungen werden erfolgreich ausgeführt.
Ein numpy-Array hat einen deklarierten Typ ( dtype
). Alle Elemente im Array müssen diesem Typ entsprechen oder müssen darin erzwungen werden. Punkt.
Einige Typen sind einfach toleranter : Wenn Sie einen Gleitkommatyp verwenden, werden die meisten Integer-Werte (außer den größten) leicht gespeichert, während das Gegenteil falsch wäre. Oder Sie können sogar einen object
dtype verwenden, mit dem Sie jeden Python-Wert speichern können, einschließlich Listen oder Diktate.
arr = np.array((1, 2.5, 'foo'), dtype=object)
print(type(arr[0]), type(arr[1]), type(arr[2]))
gibt:
<class 'int'> <class 'float'> <class 'str'>
Der Nachteil ist, dass es hier keinen Sinn macht, ein numpy-Array zu verwenden, da Sie keine vektorisierte Operation darüber verwenden können ...
Nach dem großartigen Kommentar von @juanpa.arrivillaga werde ich versuchen, einen Schritt weiter zu gehen, um zu erklären, was in numpy
. numpy
speichert normalerweise Rohdaten , damit sie direkt von C-Routinen verwendet werden können, was die Verarbeitung stark beschleunigt (was im Idiom als Vektorisierung bezeichnet wirdnumpy
). Das dtype
Attribut ist konstruktionsbedingt allen Elementen eines Ndarrays gemeinsam und, wenn auch oft, ein numerischer (C) Typ. Zum Beispiel speichert und verarbeitet ein numpy-Array auf einfache Weise ganze Zahlen fester Größe ( int32
oder int64
). In diesem Fall speichert jeder Slot im Array die Zahl als 4 (bzw. 8) Byte große Ganzzahl, während eine Python-Ganzzahl eine Zahl mit mehreren Genauigkeiten ist.
Was mit dem object
dtype passiert , ist, dass das Array tatsächlich Verweise auf jedes Python-Objekt enthält (stellen Sie sich das als Adresse vor).
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen