【发布时间】:2019-05-15 06:58:23
【问题描述】:
我正在尝试创建dtype='U' 的数组并使用numpy.save() 保存它,但是,当尝试将保存的文件加载到numpy.memmap 时,我收到与大小不是' 的倍数有关的错误U3'
我正在与python 3.5.2 合作。我尝试了以下代码,其中创建了一个空数组和另一个包含 3 个条目的数组,所有条目的长度均为 3 个字母,然后将数组保存到 file1.npy 文件中。
import numpy as np
arr = np.empty((1, 0), dtype='U')
arr2 = np.array(['111', '222', '333'], dtype='U')
arr = np.concatenate((arr, arr2), axis = None)
print(arr)
np.save('file1', arr)
rArr = np.memmap('file1.npy', dtype='U3', mode='r')
但是,当我尝试将文件加载到 numpy.memmap 时,我收到以下错误 ValueError: Size of available data is not a multiple of the data-type size.
有没有办法使用字符串将数据加载到numpy.memmap 中?我觉得我错过了一些简单的东西。
【问题讨论】:
-
我看到了这个问题,但我不确定它是如何重复的。保存的文件是二进制文件。我相信还有另一个原因导致我收到错误消息,例如我不知道的文件中的一些额外数据。
-
你试过
np.load和mmap_mode吗? -
@hpaulj,这确实有效。我不敢相信我错过了。我正在尝试不同的事情,但我忘了用
np.load和mmap_mode进行测试。另一方面,为了解决我最初的问题,我相信我也找到了答案。使用numpy.save时,如果我删除该标题(文件中的第一行)并使用numpy.memmap,结果文件似乎有一个标题,我能够正确加载数据。所以我猜memmap更适合手动保存的文件而不使用numpy.save
标签: python numpy numpy-ndarray numpy-memmap