2015-12-07 69 views

回答

3

如果要強制數組的內容被讀取並解壓縮,只是分配其內容變量,例如:

data = np.load('/path/to/data.npz', 'r') 
a = data['a'] 
b = data['b'] 
# etc 

如果你想保持完全相同的語法與延遲加載器,你可以簡單所有的陣列加載到一個字典,如:

data_dict = dict(data) 

所以,現在你可以使用

data_dict['a'] 

在腳本的後面部分提及a。儘管如此,我個人不會保留字典,因爲它擁有對所有數組的引用,可以防止任何單獨的未使用的字符在稍後的腳本中被垃圾回收。

2

我想你在以前的一個關於速度回答你的問題:現在

data = np.load(dataset_text_filepath)['texts'] 

文件內容是在內存中。

.npz文件是一個zip存檔,具有多個數組。使load爲2步操作的原因是您可能總是希望一次加載所有陣列。它可以讓你加載x而無需加載y

您可以使用系統zip歸檔工具來提取一個或多個文件,然後直接加載。這對於更好地理解文件結構可能是一個有用的步驟。

爲了更直接,您需要學習np.lib.npyio.NpzFile或者gzip模塊。