gpt4 book ai didi

python - 无法从 npz 文件加载非数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:52 24 4
gpt4 key购买 nike

我需要将几个 numpy 数组和 Python 对象保存到磁盘。我想完全最小化 I/O。我不介意加载器或保存器是否必须在内存中进行任何提升,但I/O 占用(实际访问)应该是最低的,因为当许多作业时,我们的集群会出现问题同时访问文件系统。

我尝试过:

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 )

如何访问存储在数组中的实际对象?

最佳答案

尝试

np.savez('test.npz', **my_data)
my_data = np.load('test.npz')
print(my_data['r1'])

NumPy 将字符串保存为 NumPy 数组。要将字符串作为 Python 对象访问,您可以使用 item 方法:

my_data = np.load('test.npz')
my_variable = my_data['annotation_info'].item()

关于python - 无法从 npz 文件加载非数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17912878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com