从.npy文件中提取特定值

5

我有一个.npy文件,我基本了解它的所有信息(大小,元素数量,元素类型等),我想要一种检索特定值而不加载数组的方法。目标是使用尽可能少的内存。

我正在寻找类似于:

def extract('test.npy',i,j):
    return "test.npy[i,j]"

我有点知道如何使用文本文件(请参见最近的问题),但使用npy数组可以让我做更多的事情,而不仅仅是行提取。
另外,如果您知道任何使用scipy稀疏矩阵的方法,那将非常好。
谢谢。

简而言之,数据以 .npy 格式存储的方式会使这变得困难。我建议使用 HDF5 代替,它允许您读取或修改任意数组或数组切片 - 参考 h5pyPyTables - ali_m
5
@ali_m - 这完全不正确。 .npy 文件是设计成可以进行内存映射的。虽然 HDF5 在此方面更高效,因为它对文件进行分块(减少磁盘上长时间查找的机会),但 numpy 内置了对 .npy 文件进行内存映射的支持。只需要使用 np.load(filename, mmap_mode='r') 即可。总的来说,虽然如此,我完全同意 HDF5 是长远而言更好的选择。 - Joe Kington
@JoeKington 我改正了! - ali_m
1个回答

8
只需使用data = np.load(filename, mmap_mode='r')(或其他模式,如果需要更改特定元素),就可以返回一个内存映射数组。数组的内容不会加载到内存中,而是在磁盘上,但您可以像通常一样索引数组来访问单个项目。(请注意,访问某些切片将比访问其他切片需要更长的时间,具体取决于您的数组的形状和顺序。) HDF是一种更有效的格式,但.npy格式旨在允许memmapped数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接