Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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中的内存错误_Python_Numpy_Memory_Matrix_Bigdata - Fatal编程技术网

Python中的内存错误

Python中的内存错误,python,numpy,memory,matrix,bigdata,Python,Numpy,Memory,Matrix,Bigdata,我用Python创建了一个形状为156.100.000 x 513的非稀疏矩阵,因此创建了8.007.930.000个条目。条目是32个数字。显然,我现在在使用8GB RAM系统中的数据时遇到了问题 解决这个问题的常用方法是什么?我不知道如何使用数据,例如区块,因为所有那些Numpy和Scipy函数总是在整个数据集上运行。由于数据结构的原因,稀疏矩阵不起作用,我也很难理解HDF5是否真的适合我的问题(即使用带有标准Numpy函数的大数据集而不会破坏我的内存)如果开始使用大型稀疏矩阵,您必须将自己

我用Python创建了一个形状为156.100.000 x 513的非稀疏矩阵,因此创建了8.007.930.000个条目。条目是32个数字。显然,我现在在使用8GB RAM系统中的数据时遇到了问题


解决这个问题的常用方法是什么?我不知道如何使用数据,例如区块,因为所有那些Numpy和Scipy函数总是在整个数据集上运行。由于数据结构的原因,稀疏矩阵不起作用,我也很难理解HDF5是否真的适合我的问题(即使用带有标准Numpy函数的大数据集而不会破坏我的内存

如果开始使用大型稀疏矩阵,您必须将自己限制在对稀疏矩阵进行操作的范围内。在消费类计算机上,将如此大的矩阵转换为密集矩阵已不再可能。我说的是非稀疏矩阵。哦,那么:访问一台具有大量ram的计算机-大多数算法只有在所有数据都在ram中时才能有效工作。因此,设计了相应的算法。当然,对于不适合ramIt的数据,您不能使用scipy/numpy。如果不知道您想对数据做什么,您很难提供任何具体建议。一种选择是使用内存映射数组()。这些与标准numpy数组类似(许多numpy函数将接受
np.memmap
数组而不是
np.ndarray
),不同之处在于数据将存储在磁盘上的文件中,并带有一个读/写缓存,该缓存保存在RAM中,由操作系统管理。如果您可以对整个阵列中较小的块进行操作,那么您也可以使用HDF5(例如h5py或PyTables)。您还可以查看,它提供了一个类似numpy阵列的容器,可以在磁盘上或内存中进行压缩。但是,它目前只支持numpy功能的有限子集。