Antworten:
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 von numpy.ndarray.__array__
. numpy.array
beginnt _array_fromobject
zumindest in der aktuellen Implementierung bei.
numpy.array
ist eine Funktion, die a zurückgibt numpy.ndarray
. Es gibt keinen Objekttyp numpy.array.
Nur ein paar Zeilen Beispielcode, um den Unterschied zwischen numpy.array und numpy.ndarray zu zeigen
Aufwärmschritt: Erstellen Sie eine Liste
a = [1,2,3]
Überprüfen Sie den Typ
print(type(a))
Sie erhalten
<class 'list'>
Erstellen Sie mit np.array ein Array (aus einer Liste)
a = np.array(a)
Oder Sie können den Aufwärmschritt direkt überspringen
a = np.array([1,2,3])
Überprüfen Sie den Typ
print(type(a))
Sie erhalten
<class 'numpy.ndarray'>
Dies sagt Ihnen, dass der Typ des numpy-Arrays numpy.ndarray ist
Sie können den Typ auch anhand überprüfen
isinstance(a, (np.ndarray))
und du wirst bekommen
True
In einer der beiden folgenden Zeilen wird eine Fehlermeldung angezeigt
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
numpy.ndarray()
ist eine Klasse, während numpy.array()
eine Methode / Funktion zu erstellen ist ndarray
.
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()
oder empty()
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:
np.ndarray(shape=(2,2), dtype=float, order='F', buffer=None) array([[ -1.13698227e+002, 4.25087011e-303], [ 2.88528414e-306, 3.27025015e-309]]) #random
Ein weiteres Beispiel ist das Zuweisen eines Array-Objekts zum Pufferbeispiel:
>>> np.ndarray((2,), buffer=np.array([1,2,3]), ... offset=np.int_().itemsize, ... dtype=int) # offset = 1*itemsize, i.e. skip first element array([2, 3])
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 ein numpy.ndarray()
Objekt erstellen möchten "
Ich denke mit np.array()
dir kann man nur C erstellen, als ob man die Reihenfolge erwähnt, wenn man prüft, ob np.isfortran()
es falsch ist. aber mit , np.ndarrray()
wenn Sie die Reihenfolge angeben , auf der angegebenen Reihenfolge erstellt basiert.