2013-06-08 16 views
8

Qual è la differenza tra una matrice numpy (diciamo X) che ha una forma di (N, 1) e (N,). Non sono entrambe le matrici Nx1? Il motivo per cui lo chiedo è perché a volte le computazioni restituiscono l'uno o l'altro.array numpy che è (n, 1) e (n,)

+0

Potete darmi qualche esempio? – satoru

risposta

9

Questo è un array 1D:

>>> np.array([1, 2, 3]).shape 
(3,) 

Questo array è un 2D, ma c'è un solo elemento nella prima dimensione:

>>> np.array([[1, 2, 3]]).shape 
(1, 3) 

Trasposizione dà la forma si sta chiedendo:

>>> np.array([[1, 2, 3]]).T.shape 
(3, 1) 

Ora, guarda l'array. Viene riempita solo la prima colonna di questo array 2D.

>>> np.array([[1, 2, 3]]).T 
array([[1], 
     [2], 
     [3]]) 

Attribuite queste due matrici:

>>> a = np.array([[1, 2, 3]]) 
>>> b = np.array([[1, 2, 3]]).T 
>>> a 
array([[1, 2, 3]]) 
>>> b 
array([[1], 
     [2], 
     [3]]) 

È possibile usufruire di trasmissione:.

>>> a * b 
array([[1, 2, 3], 
     [2, 4, 6], 
     [3, 6, 9]]) 

I numeri mancanti sono riempiti in Pensate per le righe e le colonne della tabella o foglio di calcolo.

>>> a + b 
array([[2, 3, 4], 
     [3, 4, 5], 
     [4, 5, 6]]) 

Fare questo con le dimensioni superiori diventa più difficile per la vostra immaginazione.