Risposte:
numpy.array
è solo una funzione di convenienza per creare un ndarray
; non è una classe in sé.
Puoi anche creare un array usando numpy.ndarray
, ma non è il modo consigliato. Dalla dotstring di numpy.ndarray
:
Le matrici devono essere costruite usando
array
,zeros
oempty
... I parametri qui riportati si riferiscono ad un metodo di basso livello (ndarray(...)
) per creare un'istanza di una matrice.
La maggior parte della carne dell'implementazione è in codice C, qui in multiarray , ma puoi iniziare a guardare le interfacce ndarray qui:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
non è una lezione, come faccio spesso. x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
è l'implementazione di numpy.ndarray.__array__
. numpy.array
inizia alle _array_fromobject
, almeno nell'attuale implementazione.
numpy.array
è una funzione che restituisce a numpy.ndarray
. Non esiste alcun tipo di oggetto numpy.array.
Solo poche righe di codice di esempio per mostrare la differenza tra numpy.array e numpy.ndarray
Fase di riscaldamento: crea un elenco
a = [1,2,3]
Controlla il tipo
print(type(a))
Otterrete
<class 'list'>
Costruisci un array (da un elenco) usando np.array
a = np.array(a)
Oppure, puoi saltare il passaggio di riscaldamento, direttamente
a = np.array([1,2,3])
Controlla il tipo
print(type(a))
Otterrete
<class 'numpy.ndarray'>
che ti dice che il tipo di array numpy è numpy.ndarray
Puoi anche controllare il tipo per
isinstance(a, (np.ndarray))
e otterrai
True
Una delle due righe seguenti ti darà un messaggio di errore
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
numpy.ndarray()
è una classe, mentre numpy.array()
è un metodo / funzione da creare ndarray
.
Nei documenti intorpiditi se vuoi creare un array dalla ndarray
classe puoi farlo in 2 modi come citato:
1- utilizzando array()
, zeros()
o empty()
metodi:
array devono essere costruiti utilizzando matrice, zeri o svuotare (fare riferimento alla sezione Vedere anche sotto). I parametri qui riportati si riferiscono a un metodo di basso livello ( ndarray(…)
) per istanziare un array.
2- ndarray
direttamente dalla classe:
esistono due modalità di creazione di un array mediante __new__
: Se il buffer è Nessuno, vengono utilizzati solo forma, tipo e ordine. Se il buffer è un oggetto che espone l'interfaccia del buffer, vengono interpretate tutte le parole chiave.
L'esempio seguente fornisce un array casuale perché non abbiamo assegnato il valore del buffer:
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
un altro esempio è quello di assegnare un oggetto array all'esempio buffer:
>>> 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])
dall'esempio precedente notiamo che non possiamo assegnare un elenco a "buffer" e abbiamo dovuto usare numpy.array () per restituire l'oggetto ndarray per il buffer
Conclusione: utilizzare numpy.array()
se si desidera creare un numpy.ndarray()
oggetto "
Penso che con np.array()
te sia possibile creare C come solo se si menziona l'ordine, quando si controlla l'utilizzo np.isfortran()
lo dice falso. ma con np.ndarrray()
quando si specifica l'ordine che crea in base all'ordine fornito.