有没有办法将 numpy unicode 数组加载到 memmap 中?

Is there a way to load a numpy unicode array into a memmap?

我正在尝试创建一个 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 中?我觉得我缺少一些简单的东西。

numpy.memmap are raw binary files, not NPY-format files. If you want to read a memory-mapped NPY file, use numpy.load 使用参数 mmap_mode='r'(或任何其他合适的值)使用的文件。

像您一样创建 'file1.npy' 后,memory-mapped 和 numpy.load 可以是这样的:

In [16]: a = np.load('file1.npy', mmap_mode='r')                                                                       

In [17]: a                                                                                                             
Out[17]: memmap(['111', '222', '333'], dtype='<U3')

看起来 np.load 是你的朋友。

Doc

Issue

以下代码片段对我有用:

rArr = np.load('file1.npy', mmap_mode='r')