Image 图像的已保存Numpy ndarray表示法占用更多空间

Image 图像的已保存Numpy ndarray表示法占用更多空间,image,numpy,io,scikit-image,Image,Numpy,Io,Scikit Image,我正在做一件非常简单的事情:使用skimage中的io函数读取图像,然后使用np.save功能保存数组。发生了一些非常奇怪的事情:原始图像只有2mb,而保存的numpy ndarray表示占用了28MB。有人知道为什么会出现这种情况吗?可能会发生一些事情,但如果没有细节(如代码),我们只能猜测。两个想法:1)输入/输出格式是什么(即原始压缩格式和重新保存的未压缩格式?)2)位深度是否相同?如果图像以JPEG等有损格式存储,这完全是意料之中的。即使PNG专门用于存储图像,也可能比np.save做得

我正在做一件非常简单的事情:使用skimage中的io函数读取图像,然后使用np.save功能保存数组。发生了一些非常奇怪的事情:原始图像只有2mb,而保存的numpy ndarray表示占用了28MB。有人知道为什么会出现这种情况吗?

可能会发生一些事情,但如果没有细节(如代码),我们只能猜测。两个想法:1)输入/输出格式是什么(即原始压缩格式和重新保存的未压缩格式?)2)位深度是否相同?如果图像以JPEG等有损格式存储,这完全是意料之中的。即使PNG专门用于存储图像,也可能比np.save做得更好。试试np.savez。@StefanvanderWalt谢谢你的建议。我确实尝试过np.savez,它成功地将图像大小降低到16MB,但仍然是原始大小的8倍。你知道为什么会这样吗?我必须将每张图像裁剪成补丁并保存在列表中。这就是为什么我不能真正使用PNG。对不起,我不太明白为什么这会影响保存到PNG?您可以轻松地将一系列PNG映射到一个数组中,即使使用dask进行延迟处理也是如此。除非您采取特殊步骤,否则您的
numpy
数组将使用8字节数(整数或浮点64)。图像可能更小,如2
np.save
正在保存数组数据缓冲区的字节副本
arr.nbytes
应该与
save
文件大小类似。数组的
形状是什么?