tuo example
è una matrice 3d
In [82]: example=np.array([[[i for i in range(0, 5)],[0 for j in range(0, 5)]] for k in range(0, 3)]) # chg 10 to 3 for display
In [83]: example.shape
Out[83]: (3L, 2L, 5L)
In [84]: example
Out[84]:
array([[[0, 1, 2, 3, 4],
[0, 0, 0, 0, 0]],
[[0, 1, 2, 3, 4],
[0, 0, 0, 0, 0]],
[[0, 1, 2, 3, 4],
[0, 0, 0, 0, 0]]])
cercando di salvare l'intero risultati cosa in caso di errore (messaggio diverso a causa della diversa versione):
In [87]: np.savetxt('test.csv',example, delimiter=',')
....
TypeError: float argument required, not numpy.ndarray
ma sav ing una 'riga' è ok
In [88]: np.savetxt('test.csv',example[1,...], delimiter=',')
Salva con formato intero fa un'uscita più bella
In [94]: np.savetxt('test.csv',example[1,...], delimiter=',',fmt='%d')
In [95]: with open('test.csv') as f:print f.read()
0,1,2,3,4
0,0,0,0,0
Così come si desidera che la matrice 3d da salvare? Tieni presente come lo userai/leggerlo. Più file? Più blocchi all'interno di un file?
https://stackoverflow.com/a/3685339/901925 è una risposta SO di 6 anni su come salvare un array 3d. La semplice risposta è aprire un file ed eseguire più savetxt
per le sezioni dell'array. Questo salva i dati in blocchi. Ma il caricamento di questi blocchi è un'altra domanda SO (che è emersa prima).
In [100]: with open('test.csv','w') as f:
...: for row in example:
...: np.savetxt(f,row,delimiter=',',fmt='%d',footer='====')
...:
In [101]: with open('test.csv') as f:print f.read()
0,1,2,3,4
0,0,0,0,0
# ====
0,1,2,3,4
0,0,0,0,0
# ====
0,1,2,3,4
0,0,0,0,0
# ====
In risposta al tuo commento, questo funziona
example=np.ones((4,2,100))
np.savetxt('test.csv',example[1,...], delimiter=',',fmt='%.18e')
Un altro modo per salvare una matrice 3D è quello di rimodellare a 2D. A rimodellare di nuovo a 3d dopo il caricamento, possibilmente utilizzando le informazioni che si è memorizzato in una riga di commento
np.savetxt('test.csv',example.reshape(-1,example.shape[-1]), delimiter=',',fmt='%.18e')
Prova 'esempio = numpy.array ([[[galleggiante (i) per i in range (0, 5)] , [0 per j nel range (0, 5)]] per k nel range (0, 10)]) 'e vedere se l'errore persiste. In alternativa, prova un formato come 'fmt = '% 04d'' nella' savetxt'call. – vmg
@vmg Nel mio codice attuale, i dati per i e j sono entrambi float, penso che l'errore deriva dal fatto che non si aspetta un terzo valore in k. – Pingk
Qual è la forma della matrice? 'savetxt' funziona solo con array 2d. Qual è il suo 'dtype'? – hpaulj