Qual è la differenza tra ndarray
e array
in Numpy? E dove posso trovare le implementazioni nel codice sorgente di Numpy?Qual è la differenza tra ndarray e array in numpy?
risposta
Bene, numpy.array
è solo una comoda funzione per creare un ndarray
, non è una classe stessa.
È inoltre possibile creare un array utilizzando numpy.ndarray
, ma non è il modo consigliato. Dal docstring di numpy.ndarray
:
Arrays dovrebbero essere costruite usando
array
,zeros
oempty
... I parametri qui riportati si riferiscono ad un metodo basso livello (ndarray(...)
) dell'istanziamento un array.
maggior parte della carne di attuazione è in codice C, here in multiarray, ma si può iniziare a guardare le interfacce ndarray qui:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
numpy.array
è una funzione che restituisce numpy.ndarray
. Non esiste alcun tipo di oggetto numpy.array.
Solo poche righe di codice di esempio per mostrare il differenza tra numpy.array e numpy.ndarray
Warm up passo: Costruire una lista
a = [1,2,3]
Controllare il tipo
print(type(a))
Otterrete
<class 'list'>
costruire un array (da un elenco) utilizzando np.array
a = np.array(a)
In alternativa, si può saltare il passaggio di riscaldamento, avere direttamente
a = np.array([1,2,3])
Controllare il tipo
print(type(a))
Otterrete
<class 'numpy.ndarray'>
che ti dice il tipo di matrice NumPy è NumPy.ndarray
è anche possibile controllare il tipo da
isinstance(a, (np.ndarray))
e si otterrà
True
I due riga che segue vi darà messaggio di errore
np.darray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
penso array () è implementato in [core/src/multiarray/methods.c] (https://github.com/numpy/numpy/blob/master/numpy/core/src/mu ltiarray/methods.c) in array_getarray(). – flxb
Questo ti può mordere se dimentichi che 'np.array' non è una classe, come faccio spesso. 'x = np.array ([1,2,1,3])' 'if isinstance (x, np.array): # ti darà un errore TypeError' –