2013-04-08 25 views

risposta

100

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 o empty ... 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

+1

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

+1

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' –

29

numpy.array è una funzione che restituisce numpy.ndarray. Non esiste alcun tipo di oggetto numpy.array.

5

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)) 
Problemi correlati