Qual è la differenza tra le funzioni di Numpy array()
e asarray()
? Quando dovresti usare uno piuttosto che l'altro? Sembrano generare output identici per tutti gli input che riesco a pensare.Numpy - array vs asarray
risposta
Il definition of asarray
è:
quindi è come array
, eccetto che ha un minor numero di opzioni e copy=False
. array
ha copy=True
per impostazione predefinita.
La differenza principale è che array
(per impostazione predefinita) creerà una copia dell'oggetto, mentre asarray
non sarà necessario.
Le differenze sono menzionate abbastanza chiaramente nella documentazione di array
e asarray
. Le differenze si trovano nella lista degli argomenti e quindi l'azione della funzione dipende da quei parametri.
Le definizioni di funzione sono:
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
e
numpy.asarray(a, dtype=None, order=None)
I seguenti argomenti sono quelli che possono essere passato a array
e nonasarray
come menzionato nella documentazione:
copia: bool, o paction Se true (valore predefinito), l'oggetto viene copiato. Altrimenti, una copia verrà eseguita solo se
__array__
restituisce una copia, se obj è una sequenza nidificata o se è necessaria una copia per soddisfare uno qualsiasi degli altri requisiti (dtype, ordine, ecc.) Di .subok: bool, opzionale Se True, sottoclassi saranno passò-through, altrimenti la matrice restituita sarà costretto a essere una base di classe gamma (default).
ndmin: int, opzionale Specifica il numero minimo di dimensioni che deve avere l'array risultante. Le unità saranno pre-pese nella forma secondo necessità per soddisfare questo requisito.
La differenza può essere dimostrata con questo esempio:
generare una matrice
>>> A = numpy.matrix(np.ones((3,3))) >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
uso
numpy.array
modificareA
. Non funziona perché si sta modificando una copia>>> numpy.array(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
uso
numpy.asarray
modificareA
.Ha funzionato perché si sta modificandoA
stesso>>> numpy.asarray(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 2., 2., 2.]])
Spero che questo aiuti!
Finalmente qualcuno dà un esempio .. Grazie mille! – CapturedTree
- 1. immagine per NumPy-array: JPG vs PNG
- 2. shuffle vs permute numpy
- 3. numpy vstack vs. column_stack
- 4. NumPy append vs concatenato
- 5. NumPy vs. multiprocessing e mmap
- 6. Aggiungi un array NumPy a un array NumPy
- 7. Fourier Transformation vs Numpy FFT
- 8. - vs - = operatori con numpy
- 9. Numpy array multidimensionale affettare
- 10. Numpy matrix to array
- 11. Rotazione numpy array 2D
- 12. array numpy con cython
- 13. indici circolari numpy array
- 14. Zero pad numpy array
- 15. Componi array numpy
- 16. Array invertito in numpy?
- 17. Conversione di Numpy Array su OpenCV Array
- 18. NumPy array slice using None
- 19. Numpy rebinning a array 2D
- 20. Numpy Array somma con pesi
- 21. Python, array di ordinamento numpy
- 22. Numpy array esclude alcuni elementi
- 23. Spacchettare NumPy array per colonna
- 24. aggiungendo array numpy con booleans
- 25. Numpy flatten RGB image array
- 26. Assegnazione array numpy mediante slicing
- 27. Iterazione veloce di array numpy
- 28. Converte array numpy in tupla
- 29. NumPy 3D-immagine array 2D
- 30. Numpy assegnazione array con copia
Quindi quando dovremmo usarli? Se si crea una matrice da zero, quale è meglio, 'array ([1, 2, 3])' o 'asarray ([1, 2, 3])'? – endolith
@endolith: '[1, 2, 3]' è un elenco Python, quindi è necessario creare una copia dei dati per creare il 'ndarary'. Quindi usa 'np.array' direttamente invece di' np.asarray' che invierebbe il parametro 'copy = False' a' np.array'. Il 'copy = False' viene ignorato se una copia deve essere fatta come sarebbe in questo caso. Se si confrontano i due usando '% timeit' in IPython vedrai una differenza per gli elenchi di piccole dimensioni, ma non importa che usi per elenchi di grandi dimensioni. – unutbu
Questo ha senso anche per i nomi dei metodi: "asarray": considera questo come un array (inplace), cioè, stai semplicemente cambiando la tua vista su questo elenco/array. "array": Effettivamente convertirlo in un nuovo array. – denvar