我有一个.npy文件,其中我基本上都知道所有内容(大小,元素数量,元素类型等),并且我希望能够在不加载数组的情况下检索特定值。目标是尽可能少地使用内存。
我正在寻找像
这样的东西def extract('test.npy',i,j):
return "test.npy[i,j]"
我知道如何使用文本文件(请参阅最近的问题),但使用npy数组执行此操作可以让我做的不仅仅是行提取。
另外,如果你知道用scipy稀疏矩阵做任何事情都会很棒。
谢谢。
答案 0 :(得分:5)
只需使用data = np.load(filename, mmap_mode='r')
(或其他一种模式,如果您还需要更改特定元素)。
这将返回一个内存映射数组。数组的内容不会加载到内存中并且将在磁盘上,但您可以像平常那样通过索引数组来访问各个项目。 (请注意,访问某些切片所需的时间比访问其他切片要长得多,具体取决于阵列的形状和顺序。)
HDF是一种更有效的格式,但.npy格式旨在允许使用memmapped数组。