簡體   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