我有非常大的.mat文件(~ 1.3GB),我正在尝试加载我的IPython代码(IPython笔记本)。我试过:
import scipy.io as sio
very_large = sio.loadmat('very_large.mat')我的笔记本电脑有8GB内存挂起。我打开了系统监视器,发现内存消耗稳步增加到7GB,然后系统就结冰了。
我做错了什么?有什么建议吗?
编辑:
关于数据的更多详细信息:下面是数据的链接:http://ufldl.stanford.edu/housenumbers/
我感兴趣的特殊文件是extra_32x32.mat。从描述:加载.mat文件创建了两个变量:x是包含图像的四维矩阵,y是类标签的向量。为了访问这些图像,X(:,i)给出了带有类标签y(i)的第32 by-32 RGB图像。
因此,例如,在以下列方式加载时,来自同一页(test_32x32.mat)的较小的test_32x32.mat文件:
SVHN_full_test_data = sio.loadmat('test_32x32.mat')
print("\nData set = SVHN_full_test_data")
for key, value in SVHN_full_test_data.iteritems():
print("Type of", key, ":", type(SVHN_full_test_data[key]))
if str(type(SVHN_full_test_data[key])) == "<type 'numpy.ndarray'>":
print("Shape of", key, ":", SVHN_full_test_data[key].shape)
else:
print("Content:", SVHN_full_test_data[key])生产:
Data set = SVHN_full_test_data
Type of y : <type 'numpy.ndarray'>
Shape of y : (26032, 1)
Type of X : <type 'numpy.ndarray'>
Shape of X : (32, 32, 3, 26032)
Type of __version__ : <type 'str'>
Content: 1.0
Type of __header__ : <type 'str'>
Content: MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Mon Dec 5 21:18:15 2011
Type of __globals__ : <type 'list'>
Content: []发布于 2018-02-11 11:19:43
这个答案取决于两个假设:
方法
考虑到这些假设,我使用的方法是:
备注:
熊猫的数据框架在一般情况下都能很好地工作。因此,如果您可以将数据读取到一个框架中,那么您很可能可以从那里使用它来做您想做的事情。
这个问题的答案向您展示了如何根据条件(索引范围或某些逻辑条件,例如something=somethingelse),一次只将一部分hdf5数据文件读入内存(熊猫数据帧)。
小咆哮
MATLAB已经支持它的最新版本7.3 MAT文件12年了,但仍然没有使用它作为标准版本保存到(这是一个磁盘空间问题,v7.3在某些情况下更大,但使用更多用途)-所以任何使用默认MATLAB设置的人都不会生成v7.3 matfile。12年过去了,我们有大量的磁盘空间,但这类事情仍然会造成问题。是时候升级您的默认标志了,MathWorks!
希望能帮上忙
汤姆
https://stackoverflow.com/questions/39153427
复制相似问题