我试图创建一个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
中?我觉得我缺少一些简单的东西。
答案 0 :(得分:0)
numpy.memmap
使用的文件是原始二进制文件,而不是NPY-format文件。如果要读取内存映射的NPY文件,请将numpy.load
与参数mmap_mode='r'
(或其他合适的值)一起使用。
像您一样创建'file1.py'之后,可以使用numpy.load
将其映射到存储器:
In [16]: a = np.load('file1.npy', mmap_mode='r')
In [17]: a
Out[17]: memmap(['111', '222', '333'], dtype='<U3')
答案 1 :(得分:0)