有谁知道如何修改以下代码,以便我可以在Python中读取3D hdf数据的特定z组件切片?从附图中可以看出,z值从0到160,我想绘制' 80'只要。尺寸为400x160x160。这是我的代码。
import h5handler as h5h
h5h.manager.setPath('E:\data\Data5', False)
for i in np.arange(0,1,5000):
cycleFile = h5h.CycleFile(h5h.manager.cycleFiles['cycle_'+str(i)+'.hdf'], 'r')
fig = plt.figure()
fig.suptitle('Cycle_'+str(i)+' at t=14.4s', fontsize=20)
ax1 = plt.subplot(311)
ax2 = plt.subplot(312)
ax3 = plt.subplot(313)
Bx = np.reshape(cycleFile.get('/fields/Bx').value.T, (160,400))*6.872130320978866e-06*(1e9)
答案 0 :(得分:0)
我想从名称中猜测h5handler是一个用于处理HDF5(.h5)文件的工具,而你似乎使用的文件是HDF4或HDF-EOS(.hdf)文件。用于处理HDF4文件的两个库是pyhdf(http://pysclint.sourceforge.net/pyhdf/documentation.html)和pyNIO(https://www.pyngl.ucar.edu/Nio.shtml)。
如果您选择使用pyhdf,您可以按如下方式阅读您的数据:
from pyhdf.SD import *
import numpy as np
file_handle = SD("your_input_file.hdf", SDC.READ)
data_handle = file_handle.select("Bx")
Bx_data = data_handle.get() #creates a numpy array filled with the data
Bx_subset = Bx_data[:,:,80]
如果您选择使用pyNIO,您可以按如下方式读取您的数据:
import Nio
file_handle = nio.open_file("your_input_file.hdf", format='hdf')
Bx_data = file_handle.variables["Bx"][:] #creates a numpy array filled with the data
Bx_subset = Bx_data[:,:,80]
希望有所帮助!