2017-04-18 44 views
1

我有一个大型图像数据集来存储。我有30万张图片。每个图像是28800个像素的矢量,这意味着我有(300000, 28800)如何存储和加载巨大的图像数据集?

我存储,作为遵循

img_arr = np.stack(images, axis=0) 

np.savetxt('pixels_dataset_large.csv',img_arr,delimiter=",") 

然而它需要较长时间来加载它和一些倍升得到存储器错误的矩阵:

有没有其他的选择来优化存储和加载它?

+3

'np.save' /'np.load'有什么问题?它将数据保存在内存中,因此不会涉及任何分析,并且该过程将与磁盘允许的速度一样快。 –

+0

@ivan_pozdeev,l只有在加载时才有probelm。当我尝试np.load()l得到TypeError:load()得到了一个意外的关键字参数'dtype' – vincent

+2

这意味着你正在使用'load'不正确。 [它没有'dtype'参数](https://docs.scipy.org/doc/numpy/reference/generated/numpy.load.html)。 –

回答

0

如果您要将300,000 x 28,000个数据保存到csv,那么假设您使用的是浮点表示形式,则您将根据输出的精度查看输出文件大小仅为1兆兆字节。即使你有四兆兆字节的磁盘空间,CSV在这个规模上的效率也非常低。

在这种情况下,我会提出一些二进制存储方案(例如hdf5)。您可以查看xarray包:它非常适合处理这种大小的密集阵列数据,它具有非常类似于NumPy的API,甚至可以利用Dask来透明地支持并行和/或内存映射计算。