numpy.memmap 用于字符串数组?

NPE*_*NPE 5 python string numpy memory-mapped-files large-data

是否可以用于将numpy.memmap基于磁盘的大型字符串数组映射到内存中?

我知道它可以用于浮点数等,但这个问题专门针对字符串。

我对固定长度和可变长度字符串的解决方案感兴趣。

该解决方案可以自由指定任何合理的文件格式。

Sve*_*ach 5

如果所有字符串都具有相同的长度,如术语“数组”所建议的那样,这很容易实现:

a = numpy.memmap("data", dtype="S10")
Run Code Online (Sandbox Code Playgroud)

将是长度为 10 的字符串的示例。

编辑:由于显然字符串的长度不同,您需要对文件进行索引以允许 O(1) 项访问。这需要读取整个文件一次并将所有字符串的起始索引存储在内存中。不幸的是,我不认为有一种纯粹的 NumPy 索引方式而不先创建一个与内存中的文件大小相同的数组。但是,可以在提取索引后删除此数组。

  • @user48956 一般来说,答案可能是使用实际的数据库。 (2认同)