2016-03-21 4 views
6

Se io inizializzo una lista pythonperché sono le matrici NumPy vuoti non stampati

x = [[],[],[]] 
print(x) 

allora restituisce

[[], [], []] 

ma se lo faccio lo stesso con un allineamento NumPy

x = np.array([np.array([]),np.array([]),np.array([])]) 
print(x) 

quindi restituisce solo

[] 

Come posso rendere un elenco vuoto annidato come fa per un normale elenco python?

risposta

8

In realtà fa restituire una lista vuota nidificato. Ad esempio, provare

x = np.array([np.array([]),np.array([]),np.array([])]) 
>>> array([], shape=(3, 0), dtype=float64) 

o

>>> print x.shape 
(3, 0) 

Non lasciate che l'uscita del print x ingannare. Questi tipi di output riflettono semplicemente le scelte (estetiche) degli implementatori di __str__ e __repr__. Per vedere effettivamente la dimensione esatta, devi usare cose come .shape.

3

per restituire un elenco vuoto nidificato da un array NumPy, si può fare:

x.tolist() 
[[], [], []] 

Tuttavia, anche se si stampa solo [], la forma è corretta:

x.shape 
(3, 0) 

E si può accedi a qualsiasi elemento come un elenco:

x[0] 
array([], dtype=float64) 
+0

'tolist' è un'idea intelligente qui. –

2

La soluzione più semplice per te è convertirlo in un st con tolist

x = np.array([np.array([]),np.array([]),np.array([])]) 
print(x) 
[] 

print(x.tolist()) 
[[], [], []] 
+0

'tolist' è un'idea intelligente qui. –