swojej example
jest 3D array
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]]])
próbuje zapisz całość powoduje błąd (inna wiadomość ze względu na inną wersję):
In [87]: np.savetxt('test.csv',example, delimiter=',')
....
TypeError: float argument required, not numpy.ndarray
ale sav ing jeden wiersz „” jest ok
In [88]: np.savetxt('test.csv',example[1,...], delimiter=',')
Zapisz w formacie liczby całkowitej sprawia ładniejsza wyjście
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
Więc jak chcesz 3d tablica być zbawiony? Pamiętaj, że będziesz go używać/czytać. Wiele plików? Wiele bloków w jednym pliku?
https://stackoverflow.com/a/3685339/901925 to 6-letnia odpowiedź na pytanie, jak zapisać tablicę 3d. Prostą odpowiedzią jest otworzenie pliku i wykonanie wielu wycinków z tablicy . To zapisuje dane w blokach. Ale ładowanie tych bloków to kolejne pytanie SO (które pojawiło się wcześniej).
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
# ====
W odpowiedzi na Twój komentarz, to działa
example=np.ones((4,2,100))
np.savetxt('test.csv',example[1,...], delimiter=',',fmt='%.18e')
Innym sposobem na zaoszczędzenie 3d tablica jest do przekształcenia go do 2d. Ci przekształcić go z powrotem do 3d po załadunku, ewentualnie za pomocą informacji, które przechowywane w wierszu komentarza
np.savetxt('test.csv',example.reshape(-1,example.shape[-1]), delimiter=',',fmt='%.18e')
Spróbuj 'przykładowy = numpy.array ([[[float (I), i in range (0, 5)] , [0 dla j w zakresie (0, 5)]] dla k w zakresie (0, 10)]) 'i sprawdź, czy błąd nie zniknął. Alternatywnie wypróbuj format '' fmt = '% 04d'' w komendzie 'savetxt'. – vmg
@vmg W moim rzeczywistym kodzie dane dla i i j są zmiennymi, myślę, że błąd wynika z faktu, że nie oczekuje trzeciej wartości w k. – Pingk
Jaki jest kształt tablicy? 'savetxt' działa tylko z tablicami 2d. Jaki jest jego "dtype"? – hpaulj