无法在NumPy中指定结构化数据类型

时间:2014-08-27 13:59:36

标签: python 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

我已经放了''基于以下正确读取数据的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

1 个答案:

答案 0 :(得分:0)

NumPy dtypes中每个元组的第一个元素必须是字段名称。试试这个:

np.dtype([
    ('field1', '>b1',2880),
    ('field2', '>i2',(480,1440)),
    ('field3', '>i2',(480,1440)),
    ('field4', '>b1',(480,1440)),
    ('field5', '>i2',(480,1440)),
    ])