我正在收集大量數據,這些數據將使用h5py保存到各個H5文件中。我想將這些圖像拼貼到一個pcolormesh圖中以保存爲單個圖像。使用Python生成保存在H5文件中的非常大的數據集中的pcolormesh圖像
我一直在處理的一個快速示例將生成2000x2000個隨機數據點的數組,並使用h5py將它們保存在H5文件中。然後我嘗試導入這些文件中的數據,並嘗試將它作爲pcolormesh繪製在matplotlib中,但我總是遇到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()
的範圍值循環可以改變,直到100,但沒有一個內存錯誤,我可以選擇的最大值爲5(即5可以在matplotlib中的pcolormesh圖上打補丁),它非常笨重和緩慢。我需要能夠將許多圖像拼湊在一起。
是否有任何其他技術我應該用來繪製這些數據?或者,如果我可以將多個H5文件中的數據轉換爲圖像而不經過matplotlib或類似的程序(如scipy),那將會很好。
總之,我的問題是這樣的:
- 我有大量的HDF5文件和圖像數據(2000×2000)
- 我需要將這些文件拼湊成一個單一的圖像,並將其保存
任何幫助表示讚賞。另外,我很樂意回答有關我的問題的任何其他問題。
編輯(2013年6月5日):
我覺得類似的問題將是如何處理(進口,處理,編輯,等等)可以用Python非常高的分辨率的圖像。這基本上是我想要做的;從一組較小的圖像生成一個非常高分辨率的圖像。
嘗試使用'imshow'與'interpolation =「none」'而不是'pcolormesh'。您需要更改指定圖像位置的方式(例如,使用「範圍」kwarg而不是傳入x和y),但它應該更快。 –
你能不能抽樣嗎? – tacaswell
dtype是什麼數據?你能以較低的精度逃脫嗎?我懷疑你的眼睛能夠區分float32和float64(或int16) – matt