Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 使用Python限制内存中适合的数据量,以及当数据不适合内存时如何处理?_Python 2.7_Memory Management_Numpy - Fatal编程技术网

Python 2.7 使用Python限制内存中适合的数据量,以及当数据不适合内存时如何处理?

Python 2.7 使用Python限制内存中适合的数据量,以及当数据不适合内存时如何处理?,python-2.7,memory-management,numpy,Python 2.7,Memory Management,Numpy,我想执行一个测试,如果我有一个500 MB的数据集,我只想读取100 MB的数据。这只是一个例子。一般来说,如果我的数据集大小为x,我希望能够只读取x/k个数据量 数据的格式为numpy数组。代码流将是: data = pickle.load(open('test.data', 'rb')) nrows = data.shape[0] ncols = data.shape[1] sketch = np.zeros((k, ncols) #k << n for item in data

我想执行一个测试,如果我有一个500 MB的数据集,我只想读取100 MB的数据。这只是一个例子。一般来说,如果我的数据集大小为x,我希望能够只读取x/k个数据量

数据的格式为numpy数组。代码流将是:

data = pickle.load(open('test.data', 'rb'))
nrows = data.shape[0]
ncols = data.shape[1]
sketch = np.zeros((k, ncols) #k << n
for item in data:
    Do Something
data=pickle.load(打开('test.data','rb'))
nrows=data.shape[0]
ncols=data.shape[1]

sketch=np.zeros((k,ncols)#k既然我同意他们的观点,我将合并@HYRY和@ali_m的评论:如果你的数据无法放入内存,最简单的方法就是“脱离核心”处理它。这意味着数据在磁盘上,但软件层允许您几乎像在内存中一样与之交互。numpy内置了一个解决方案:。另一个非常好的软件包是。第一个软件包将数据存储为二进制文件,numpy放在文件的顶部,而不是RAM块的顶部。然后,您可以使用data inc.执行任何您想要的操作在整个阵列中执行luding操作。另一个需要HDF5文件,并且支持一些核心外的操作,它们速度非常快,还支持一些缩减操作,但您的限制更大。另一方面,HDF5是一种非常流行的格式,可以从许多其他语言访问,因此这是一个非常好的选择。

不要使用pickle进行压缩numpy,您应该使用hdf5。如果您尝试取消勾选不适合核心内存的内容,Python将抛出
MemoryError
异常。这对于处理不适合RAM的大型数据集非常有用。我可以使用pytables指定,我只需要RAM中的一条记录或100条记录吗?