2014-10-07 16 views
4

使用np.savetxtnp.loadtxt將多於2維的數組(ndim > 2)存儲爲文件並使用相同的格式(維)檢索它的一般方法是什麼?在多維數組中使用np.savetxt和np.loadtxt

我的問題是,如果我在存儲時給出任何分隔符,我是否需要在檢索時給予一些處理?加上處理浮動並以相同的格式檢索它是有點棘手。

我在文檔中見過很多簡單的例子。我只是很好奇最簡單的存儲np.savetxt(filename, array)是否可以使用簡單array = np.loadtxt(filename)檢索或不。

+1

你必須使用文本文件嗎?因爲最簡單的方法是使用'np.save()'或'np.savez()'... – 2014-10-07 11:16:20

+0

大部分.dat文件。 – Hima 2014-10-07 11:27:02

+0

那麼我試着用分隔符','。我可以檢索它,只需將它使用np.loadtxt()加載到numpy數組中並重新塑造它即可。 – Hima 2014-10-07 11:29:00

回答

2

如果您需要保存多維數組中的文本文件,你可以使用header參數保存原始陣列形狀:

import numpy as np 

a = np.random.random((2, 3, 4, 5)) 

header = ','.join(map(str, a.shape)) 
np.savetxt('test.txt', a.reshape(-1, a.shape[-1]), header=header, 
      delimiter=',') 

並加載這個數組,你可以這樣做:

with open('test.txt') as f: 
    shape = map(int, f.next()[1:].split(',')) 
    b = np.genfromtxt(f, delimiter=',').reshape(shape) 
+0

這僅僅是.txt文件嗎?因爲對於.dat,我認爲numpy有更多的能力來處理格式的保存。 – Hima 2014-10-07 14:07:49

+0

@Hima它使用任何擴展名和使用'np.savetxt()'函數的'fmt'參數控制的格式。 。 – 2014-10-07 14:20:26