Numpy – Array vs asarray

Was ist der Unterschied zwischen Numpys array() und asarray() Funktionen? Wann solltest du einen anderen als den anderen benutzen? Sie scheinen eine identische Ausgabe für alle Eingänge zu erzeugen, an die ich denken kann.

3 Solutions collect form web for “Numpy – Array vs asarray”

Die Definition von asarray ist:

 def asarray(a, dtype=None, order=None): return array(a, dtype, copy=False, order=order) 

So ist es wie array , außer es hat weniger Optionen und copy = False . array hat standardmäßig copy = True .

Ich denke, der Hauptunterschied ist, dass array (standardmäßig) eine Kopie des Objekts zu machen, während asarray wird nicht, wenn nötig.

Der Unterschied kann durch dieses Beispiel demonstriert werden:

  1. Eine Matrix erzeugen

     >>> A = numpy.matrix(np.ones((3,3))) >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]]) 
  2. Verwenden Sie numpy.array , um A zu ändern. Funktioniert nicht, weil Sie eine Kopie ändern

     >>> numpy.array(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]]) 
  3. Verwenden Sie numpy.asarray , um A zu ändern. Es hat funktioniert, weil du A selbst modifizierst

     >>> numpy.asarray(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 2., 2., 2.]]) 

Hoffe das hilft!

Die Unterschiede werden in der Dokumentation von array und asarray ganz deutlich asarray . Die Unterschiede liegen in der Argumentliste und damit die Aktion der Funktion abhängig von diesen Parametern.

Die Funktionsdefinitionen sind:

 numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0) 

und

 numpy.asarray(a, dtype=None, order=None) 

Die folgenden Argumente sind diejenigen, die an array und nicht asarray wie in der Dokumentation erwähnt:

Copy: bool, optional Wenn true (Standard), dann wird das Objekt kopiert . Andernfalls wird eine Kopie nur gemacht, wenn __array__ eine Kopie zurückgibt, wenn obj eine verschachtelte Sequenz ist oder wenn eine Kopie benötigt wird, um irgendwelche der anderen Anforderungen (dtype, order, etc.) zu erfüllen.

Subok: bool, optional Wenn True, dann werden Unterklassen übergeben , sonst wird das zurückgegebene Array gezwungen, ein Basisklassen-Array zu sein (Standard).

Ndmin: int, optional Gibt die minimale Anzahl von Dimensionen an, die das resultierende Array haben soll. Ones wird auf die Form vorbereitet, um diese Anforderung zu erfüllen.

  • Vergleich von pandas.Series für Gleichheit, wenn sie nan enthalten?
  • Gibt es eine scipy / numpy Alternative zu R's nrd0?
  • Numpy.memmap: falsche Speicherzuweisung
  • Das Schreiben von scipy bricht Multiprocessing-Unterstützung in Python
  • Python matplotlib errorbar Problem
  • Übergeben von Argumenten zu fsolve
  • Multivariate Kernel Dichte Schätzung in Python
  • Füllen Sie 1D numpy Array aus Arrays mit Indizes
  • Ungültiger Wert in "weniger" beim Vergleich von np.nan in einem Array
  • Schnelle Interpolation von Rasterdaten
  • Beste Möglichkeit, den Betrieb mit Input- und Output-History-Abhängigkeit zu vektorisieren?
  • Python ist die beste Programmiersprache der Welt.