Was ist der Unterschied zwischen ndarray
und array
in Numpy? Und wo finde ich die Implementierungen im numpy-Quellcode?
240
Was ist der Unterschied zwischen ndarray
und array
in Numpy? Und wo finde ich die Implementierungen im numpy-Quellcode?
numpy.array
ist nur eine praktische Funktion zum Erstellen eines ndarray
; es ist keine Klasse selbst.
Sie können ein Array auch mit erstellen numpy.ndarray
, dies ist jedoch nicht die empfohlene Methode. Aus der Dokumentation von numpy.ndarray
:
Arrays sollten mit konstruiert sein
array
,zeros
oderempty
... Die Parameter , die hier angegeben beziehen sich auf eine Low-Level - Methode (ndarray(...)
) für ein Array der Instanziierung.
Der größte Teil der Implementierung befindet sich in C-Code, hier in Multiarray , aber Sie können sich hier die ndarray-Schnittstellen ansehen:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
keine Klasse ist, wie ich es oft tue.x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
ist die Implementierung vonnumpy.ndarray.__array__
.numpy.array
beginnt_array_fromobject
zumindest in der aktuellen Implementierung bei.numpy.array
ist eine Funktion, die a zurückgibtnumpy.ndarray
. Es gibt keinen Objekttyp numpy.array.quelle
Nur ein paar Zeilen Beispielcode, um den Unterschied zwischen numpy.array und numpy.ndarray zu zeigen
Aufwärmschritt: Erstellen Sie eine Liste
Überprüfen Sie den Typ
Sie erhalten
Erstellen Sie mit np.array ein Array (aus einer Liste)
Oder Sie können den Aufwärmschritt direkt überspringen
Überprüfen Sie den Typ
Sie erhalten
Dies sagt Ihnen, dass der Typ des numpy-Arrays numpy.ndarray ist
Sie können den Typ auch anhand überprüfen
und du wirst bekommen
In einer der beiden folgenden Zeilen wird eine Fehlermeldung angezeigt
quelle
numpy.ndarray()
ist eine Klasse, währendnumpy.array()
eine Methode / Funktion zu erstellen istndarray
.Wenn Sie in numpy docs ein Array aus einer
ndarray
Klasse erstellen möchten, können Sie dies auf zwei Arten tun, wie angegeben:Unter Verwendung von 1-
array()
,zeros()
oderempty()
Methoden: Arrays konstruiert werden soll Array, Nullen oder leer ist (siehe Abschnitt Siehe auch weiter unten). Die hier angegebenen Parameter beziehen sich auf eine Low-Level-Methode (ndarray(…)
) zum Instanziieren eines Arrays.2-
ndarray
direkt aus der Klasse: Es gibt zwei Modi zum Erstellen eines Arrays mit__new__
: Wenn der Puffer Keine ist, werden nur Form, Typ und Reihenfolge verwendet. Wenn buffer ein Objekt ist, das die Pufferschnittstelle verfügbar macht, werden alle Schlüsselwörter interpretiert.Das folgende Beispiel gibt ein zufälliges Array an, da wir keinen Pufferwert zugewiesen haben:
Ein weiteres Beispiel ist das Zuweisen eines Array-Objekts zum Pufferbeispiel:
Aus dem obigen Beispiel geht hervor, dass wir "buffer" keine Liste zuweisen können und dass wir numpy.array () verwenden mussten, um das ndarray-Objekt für den Puffer zurückzugeben
Fazit: verwenden,
numpy.array()
wenn Sie einnumpy.ndarray()
Objekt erstellen möchten "quelle
Ich denke mit
np.array()
dir kann man nur C erstellen, als ob man die Reihenfolge erwähnt, wenn man prüft, obnp.isfortran()
es falsch ist. aber mit ,np.ndarrray()
wenn Sie die Reihenfolge angeben , auf der angegebenen Reihenfolge erstellt basiert.quelle