我要讀以下的二進制文件:無法specyfing結構化的數據類型,在與NumPy
fname = '3B42RT.2014082603.7.bin'
with open(fname, 'rb') as fi:
dt = np.dtype([('>b1',2880),('>i2',(480,1440)),('>i2',(480,1440)),('>b1',(480,1440)),('>i2',(480,1440))])
data = np.fromfile(fi, dtype=dt)
但是,我得到了以下錯誤消息:
TypeError: data type not understood
我已經把基於「DT」在以下IDL程序中正確讀取數據:
file = "3B42RT.2014082603.7.bin"
data = {header: bytarr(2880.0), precip: intarr(1440.0,480.0), precip_error: intarr(1440.0,480.0), $
source_of_estimate: bytarr(1440.0,480.0), precip_uncal: intarr(1440.0,480.0)}
close, 1
openr, 1, file
readu, 1, data
close, 1
precip = swap_endian(data.precip)
print, precip
我想使用Python正確讀取文件。 我認爲我的代碼中的問題是在NumPy中定義結構化數據類型。有興趣知道是否有人熟悉這類問題。我經歷了以下NumPy文檔,但由於我對Python的一些瞭解,我無法弄清楚它。 http://docs.scipy.org/doc/numpy/user/basics.rec.html#accessing-and-modifying-field-names
如果需要的數據文件,它是在這裏:ftp://trmmopen.gsfc.nasa.gov/pub/merged/3B42RT/3B42RT.2014082603.7.bin.gz – 2014-08-27 14:01:09