【发布时间】:2024-04-30 06:25:02
【问题描述】:
我有一个大型图像数据集要存储。我有 300,000 张图片。每张图片都是一个28800像素的向量,也就是说我有一个(300000, 28800)的矩阵
我保存如下
img_arr = np.stack(images, axis=0)
np.savetxt('pixels_dataset_large.csv',img_arr,delimiter=",")
但是加载它需要很长时间,有时会出现内存错误:
data_pixels=np.genfromtxt("pixels_dataset_large.csv", delimiter=',')
是否有任何替代方案可以优化存储和加载它?
【问题讨论】:
-
np.save/np.load有什么问题?它将数据保存在内存中,因此不涉及解析,并且该过程将与磁盘允许的一样快。 -
@ivan_pozdeev,我只有在加载时才有问题。当我尝试 np.load() l 得到 TypeError: load() got an unexpected keyword argument 'dtype'
-
这意味着您错误地使用了
load。 It doesn't have adtypeargument. -
我做了以下 np.load("pixels_dataset_large.csv", delimiter=',')。没有 dype 参数可以放入 load() !!
-
Ivan 建议存储更聪明(保存、加载)的二进制表示。您现在似乎使用 np.load (再次:二进制!)来加载您使用 savetxt 保存的基于文本(非二进制!)的东西(读取 binary-repr 永远不会使用分隔符信息)。这当然行不通! (所以基本上:savetxt genfromtxt; save load)。 numpy's docs on load even gives a complete example.
标签: python image numpy pickle conv-neural-network