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,zerosoempty... 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.arraynon è 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.arrayinizia 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 ndarrayclasse 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- ndarraydirettamente 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.