从.np文件中提取特定值
我有一个.npy文件,基本上我知道它的所有信息(比如大小、元素数量、元素类型等等),我想要一种方法可以在不加载整个数组的情况下获取特定的值。我的目标是尽量减少内存的使用。
我在寻找类似于
def extract('test.npy',i,j):
return "test.npy[i,j]"
这样的东西。我大概知道怎么处理文本文件(可以参考最近的问题),但如果能用这种方法处理npy数组,那就能做的不止是提取行。
另外,如果你知道怎么用scipy稀疏矩阵做到这一点,那就太好了。
谢谢!
1 个回答
8
你只需要使用 data = np.load(filename, mmap_mode='r')
这个代码(如果你需要修改特定的元素,也可以用其他模式)。
这样做会返回一个内存映射的数组。这个数组的内容不会被加载到内存中,而是保存在硬盘上,但你可以像平常一样通过索引来访问数组中的单个元素。(需要注意的是,访问某些部分的时间可能会比访问其他部分要长,这取决于你的数组的形状和顺序。)
HDF格式在这方面更高效,但.npy格式是专门设计用来支持内存映射数组的。