1
我需要將幾個numpy數組和Python對象保存到磁盤。我想完全最小化I/O。我不介意裝入程序或保存程序是否必須在內存中進行任何提升,但I/O佔用空間(實際訪問)應該是最低的,因爲當許多作業訪問文件系統時,羣集中存在問題同時。無法從npz文件加載非數組
我試着用:
import numpy as np
my_data = dict()
my_data['r1'] = np.random.randint(3, size=(100,200))
my_data['rs'] = np.random.randint(3, size=(50,400))
my_data['annotation_info'] = 'Two random arrays'
my_data['current_date'] = 'July 28'
np.savez('test.npz', my_data = my_data)
但是當我打開,我得到:
temp = np.load('test.npz')
my_data = temp['my_data']
my_data['r1']
ValueError: field named features not found
此外,my_data
似乎現在是一個數組,my_data.shape
返回()
。奇怪的是,如果我這樣做:
print(my_data)
我得到:
{'current_date': 'July 28', 'rs': array([[0, 1, 0, ..., 0, 2, 0],
[1, 1, 1, ..., 1, 1, 0],
[2, 1, 1, ..., 1, 1, 0],
...,
[1, 0, 2, ..., 2, 0, 1],
[0, 2, 0, ..., 1, 1, 0],
[1, 1, 0, ..., 1, 1, 1]]), 'annotation_info': 'Two random arrays', '
r1': array([[2, 0, 1, ..., 0, 2, 2],
[0, 0, 2, ..., 0, 2, 1],
[2, 2, 2, ..., 1, 0, 0],
...,
[0, 2, 1, ..., 2, 0, 0],
[0, 0, 1, ..., 2, 1, 0],
[2, 1, 2, ..., 0, 2, 2]])}
更新
如果我做什麼unutbu建議:
np.savez('test.npz', **my_data)
my_data = np.load('test.npz')
my_variable = my_data['annotation_info']
my_variable
不是字符串,例如my_variable.upper()
回報:
numpy.ndarray object has no attribute 'upper'
事實上type(my_variable)
回報:
numpy.ndarray
但同樣,my_variable[0]
拋出一個錯誤,並my_variable.shape
回報()
(這似乎是一個0-Rank array
)
如何訪問存儲在數組中的實際對象?
感謝unutbu,我已經更新了我的OP –
我已經更新了我的答案。 – unutbu