2015-06-14 43 views
2

我正在尋找一種方法來生成具有不同類型的多個numpy數組中的壓縮二進制字符串。 :d 在這個問題上推薦的方法:將numpy數組序列化爲npz字符串?

Storing and loading numpy arrays as files

是使用以下:

np.savez_compressed('file_name_here.npz', arr_a = a, arr_b = b) 

但需要注意的是,我需要直接在實際的字符串,沒有路徑將其保存到。有沒有簡單的方法直接生成二進制字符串而不保存到磁盤?是否有某種工作要做?

+0

在一個側面說明,在文檔它說,'如果關鍵字給出參數,那麼文件名取自關鍵字。如果參數傳入時沒有關鍵字,那麼存儲的文件名是arr_0,arr_1等,爲什麼它在savez應該保存單個文件時說文件名? – zehelvion

+0

'savez ...'將數據寫入一組文件,每個變量都有一個不同的文件。它們一起打包成一個檔案,也可以壓縮。這不是爲了創建字符串緩衝區而設計的。 – hpaulj

回答

3

你可以簡單地壓縮數組保存到一個StringIO對象,並讀回,

from cStringIO import StringIO 
import numpy as np 

x = np.ones(10) 

f = StringIO() 
np.savez_compressed(f, x=x) 
f.seek(0) 
out = f.read() 

print(out) 
+2

所以'np.load(StringIO(out))['x']'會恢復'x'。 – hpaulj

+0

非常感謝你和@hpaulj – zehelvion

相關問題