372 Stimmen

Was ist der Unterschied zwischen ndarray und Array in NumPy?

Was ist der Unterschied zwischen ndarray und array in NumPy? Wo ist ihre Implementierung im NumPy-Quellcode?

330voto

wim Punkte 297608

numpy.array ist nur eine Komfortfunktion zum Erstellen eines ndarray; es ist keine Klasse an sich.

Sie können auch ein Array mit numpy.ndarray erstellen, aber dies ist nicht der empfohlene Weg. Aus dem Dokumentationszeichenfolge von numpy.ndarray:

Arrays sollten mit array, zeros oder empty erstellt werden... Die hier angegebenen Parameter beziehen sich auf eine Low-Level-Methode (ndarray(...)) zur Instanziierung eines Arrays.

Der Großteil der Implementierung befindet sich im C-Code, hier in multiarray, aber Sie können sich die ndarray-Schnittstellen hier ansehen:

https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py

80voto

numpy.array ist eine Funktion, die ein numpy.ndarray Objekt zurückgibt.

Es gibt kein Objekt vom Typ numpy.array.

52voto

Ying Punkte 1854

Nur ein paar Zeilen Beispielcode, um den Unterschied zwischen numpy.array und numpy.ndarray zu zeigen

Aufwärmschritt: Erstellen einer Liste

a = [1,2,3]

Überprüfen Sie den Typ

print(type(a))

Sie erhalten

Erstellen eines Arrays (aus einer Liste) mit np.array

a = np.array(a)

Oder, Sie können den Aufwärmeschritt überspringen und direkt haben

a = np.array([1,2,3])

Überprüfen Sie den Typ

print(type(a))

Sie erhalten

was Ihnen sagt, dass der Typ des numpy-Arrays numpy.ndarray ist

Sie können auch den Typ überprüfen, indem Sie

isinstance(a, (np.ndarray))

und Sie erhalten

True

Einer der folgenden beiden Zeilen wird Ihnen eine Fehlermeldung geben

np.ndarray(a)                # sollte np.array(a) sein
isinstance(a, (np.array))    # sollte isinstance(a, (np.ndarray)) sein

15voto

Mahmoud Elshahat Punkte 1823

numpy.ndarray() ist eine Klasse, während numpy.array() eine Methode / Funktion zum Erstellen von ndarray ist.

In den numpy-Dokumenten können Sie auf zwei Arten ein Array aus der Klasse ndarray erstellen, wie unten angegeben:

1- Verwendung der Methoden array(), zeros() oder empty(): Arrays sollten mit array, zeros oder empty (siehe Abschnitt Siehe auch unten) erstellt werden. Die hier angegebenen Parameter beziehen sich auf eine Low-Level-Methode (ndarray(…)) zum Instanziieren eines Arrays.

2- direkt aus der Klasse ndarray: Es gibt zwei Modi zur Erstellung eines Arrays mit __new__: Wenn der Puffer None ist, werden nur Shape, Dtype und Order verwendet. Wenn der Puffer ein Objekt ist, das die Pufferschnittstelle freigibt, werden alle Schlüsselwörter interpretiert.

Im folgenden Beispiel wird ein zufälliges Array erstellt, 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]])         #zufällig

Ein weiteres Beispiel ist die Zuweisung eines Array-Objekts an den Puffer Beispiel:

>>> np.ndarray((2,), buffer=np.array([1,2,3]),
...            offset=np.int_().itemsize,
...            dtype=int) # Offset = 1*Itemgröße, d.h. erstes Element überspringen
array([2, 3])

Im obigen Beispiel sehen wir, dass wir einer Liste keinen "Puffer" zuweisen können und wir numpy.array() verwenden mussten, um ein ndarray-Objekt für den Puffer zurückzugeben

Fazit: Verwenden Sie numpy.array(), wenn Sie ein numpy.ndarray() Objekt erstellen wollen"

-3voto

Sujith Rao Punkte 17

Ich denke, mit np.array() kannst du nur C-ähnliche erstellen, obwohl du die Reihenfolge angibst, wenn du mit np.isfortran() überprüfst, sagt es falsch. aber mit np.ndarray(), wenn du die Reihenfolge angibst, wird basierend auf der angegebenen Reihenfolge erstellt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X