繁体   English   中英

使用Python从H5文件中保存的非常大的数据集生成pcolormesh图像

[英]Generating pcolormesh images from very large data sets saved in H5 files with Python

我正在收集大量数据,这些数据将使用h5py保存到单独的H5文件中。 我想将这些图像拼凑成一个pcolormesh图,以保存为单个图像。

我一直在研究的一个快速示例生成2000x2000随机数据点的数组,并使用h5py将它们保存在H5文件中。 然后我尝试导入这些文件中的数据并尝试在matplotlib中将其绘制为pcolormesh,但我总是遇到memoryError(这是预期的)。

import numpy
import h5py
arr = numpy.random.random((2000,2000))

with h5py.File("TEST_HDF5_SAVE_FILES\\Plot_0.h5", "w") as f:
    dset = f.create_dataset("Plot_0", data = arr)

for i in range(1,100):
    arr = numpy.random.random((2000,2000))
    with h5py.File("TEST_HDF5_SAVE_FILES\\Plot_" + str(i) + ".h5", "w") as f:
        dset = f.create_dataset("Plot_" + str(i), data = arr)

该脚本生成我的文件。 我选择了100作为任意数字,只是为了拥有足够大的文件集。

然后我使用以下脚本导入它们:

y = numpy.arange(0, 2000, 1)

for display_plot_num in range(0, 5):
    print display_plot_num
    x = numpy.arange(display_plot_num*2000, display_plot_num*2000 + 2000, 1)

    with h5py.File("TEST_HDF5_SAVE_FILES\\Plot_" + str(display_plot_num) + ".h5", "r+") as f:
        data = f["Plot_" + str(display_plot_num)]
        plt.pcolormesh(x, y, data)
plt.show()

for循环中的范围值可以更改为100,但我可以选择的最大值没有内存错误是5(即5个绘图可以在matplotlib的pcolormesh图上修补)并且它非常笨重和缓慢。 我需要能够拼凑许多图像。

有没有其他技术可以用来绘制这些数据? 或者,如果我可以将多个H5文件中的数据转换为图像而不通过matplotlib或类似的程序(如scipy),那就太好了。

总之,我的问题是:

  • 我有大量带有图像数据的HDF5文件(2000x2000)
  • 我需要将这些文件拼凑成一个图像并保存

任何帮助表示赞赏。 此外,我很乐意回答有关我的问题的任何进一步的问题。


编辑(5.6.2013):

我觉得类似的问题是如何使用Python中的高分辨率图像处理(导入,操作,编辑等)。 这基本上就是我想要做的; 从一组较小的图像中生成非常高分辨率的图像。

减少matplotlib中图像膨胀的一种方法(特别是在保存到SVG时)是使用rasterized=True kwarg。 这将基本上“压平”你的pcolormesh,这使得它更快保存,使用更少的资源等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM