0

有谁知道如何修改以下代码,以便我可以在 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)

在此处输入图像描述

4

1 回答 1

1

我从名字猜想 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]

希望有帮助!

于 2015-09-25T16:14:45.957 回答