【发布时间】:2019-10-31 02:38:05
【问题描述】:
在 Python 3.7 中,Numpy:我使用 numpy 保存并加载了一个字典(就像我在这里已经问过的:Saving a sequence of 3rd-order Tensors and reading it back without losing array format)。
加载它会将其合并为一件大事,我无法再获得单个值。
我使用np.save('filename', dict) 来保存像{(1, 0): 1, (1, 1): 2, (2, 0): 3, (2, 1): 4} 和loaded_dict = np.load('filename.npy', allow_pickle=True) 这样的字典来加载我需要成为字典的对象。
现在只是尝试做loaded_dict[(1, 0)] 不起作用。实际上:
print(loaded_dict.shape) 输出()。
工作示例代码:
import numpy as np
example_dict = {(1, 0): 1, (1, 1): 2, (2, 0): 3, (2, 1): 4}
np.save('filename', example_dict)
loaded_dict = np.load('filename.npy', allow_pickle=True)
print(loaded_dict) # Works just fine, prints out the example dict
print(type(loaded_arrs)) # Outputs <class 'numpy.ndarray'>
print(loaded_dict.shape) # Outputs ()
print(loaded_dict[(1, 0)]) # Does not work, Error below
输出:
{(1, 0): 1, (1, 1): 2, (2, 0): 3, (2, 1): 4}
<class 'numpy.ndarray'>
()
IndexError: too many indices for array
我真的只需要按这个顺序排列的数字1, 2, 3, 4。最初我也想使用元组,但仅获取数字(按顺序!)就足够了。
另外:这些数字是原始列表。我将其保留在代码之外以使其更具可读性。要解决多大的问题?如果您只有整数的解决方案,我也可以使用它!
任何帮助将不胜感激。我已经有一个 127 KB 的文件,需要 11 个小时才能制作出来,所以最好我想用我已经拥有的东西制作一些东西。如果这不可能或太复杂,那么我可以重新开始,但只能作为最后的手段。
【问题讨论】:
-
哦,是的。不知何故,当我搜索它时,它并没有出现,或者我一定忽略了它。对不起。
-
当 shape 为
()时,您可以访问带有空元组loaded_dict[()]的元素。但是item()也一样。
标签: python-3.x numpy