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

Python 无法在NumPy中指定结构化数据类型,python,numpy,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) 但是,我获得了以下错误

我必须读取以下二进制文件:

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程序的“dt”放入正确读取数据的程序中:

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知之甚少,我无法理解它。
NumPy数据类型中每个元组的第一个元素必须是字段名。试试这个:

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

如果数据文件是必需的,它在这里:谢谢,我一定会+1得到15分。顺便说一句,我可以把它放在字典的形式,这样就可以很容易地访问fieldname吗?一旦您使用这样的数据类型进行读取,您将得到一个“结构化数组”(以前称为recarray)。这已经命名了字段,因此您可以执行
data['field2'][34][100]
等操作。与IDL相比,'>b1'、'>i2'、'>i2'、'>b1'和'>i2'仍然存在问题,对吗?这是什么问题?如果与此问题有所不同,您可能需要发布一个新问题。因为数据['field2']的输出与IDL的输出不同。