Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从.npy文件中提取特定值_Python_Arrays_Numpy_Loading_Extract - Fatal编程技术网

Python 从.npy文件中提取特定值

Python 从.npy文件中提取特定值,python,arrays,numpy,loading,extract,Python,Arrays,Numpy,Loading,Extract,我有一个.npy文件,我基本上知道它的所有内容(大小、元素数量、元素类型等),我希望有一种方法可以在不加载数组的情况下检索特定的值。目标是尽可能少地使用内存 我在找像这样的东西 def extract('test.npy',i,j): return "test.npy[i,j]" 我知道如何使用文本文件(见最近的问题),但是使用npy数组可以让我做的不仅仅是行提取 另外,如果你知道用scipy稀疏矩阵做这件事的任何方法,那将是非常棒的 多谢各位 只需使用data=np.load(文件名

我有一个.npy文件,我基本上知道它的所有内容(大小、元素数量、元素类型等),我希望有一种方法可以在不加载数组的情况下检索特定的值。目标是尽可能少地使用内存

我在找像这样的东西

def extract('test.npy',i,j):
    return "test.npy[i,j]"
我知道如何使用文本文件(见最近的问题),但是使用npy数组可以让我做的不仅仅是行提取

另外,如果你知道用scipy稀疏矩阵做这件事的任何方法,那将是非常棒的


多谢各位

只需使用
data=np.load(文件名,mmap_mode='r')
(如果需要更改特定元素,也可以使用其他模式之一)

这将返回一个内存映射数组。数组的内容不会加载到内存中,而是在磁盘上,但您可以像通常一样通过索引数组来访问单个项。(请注意,根据阵列的形状和顺序,访问某些切片比访问其他切片需要更长的时间。)


HDF是一种更有效的格式,但是.npy格式的设计允许使用memmapped数组。

简言之,数据存储在
.npy
格式中的方式会使这变得困难。我建议改为使用HDF5,它允许您读取或修改任意数组或数组切片-看看或。@ali\m-这根本不是真的
.npy
文件设计为memmapped。HDF5在这方面当然更有效,因为它会将文件分块(减少磁盘上长搜索的更改),但对memmapping
.npy
文件的支持内置于numpy中。只需使用
np.load(文件名,mmap_mode='r')
。不过,总的来说,从长远来看,我当然同意HDF5是一个更好的选择。@JoeKington我被纠正了!