我需要帮助阅读项目的数据。我试图读取的数据是以二进制格式编写的,使用FORTRAN以下列方式:
采用" toto"采用fortran二进制格式。一个单浮点数组
open(unit=11,file=outfich,form='unformatted')
write(11)ngal,9 ! Number of galaxies for which ages are computed
allocate(toto(ngal,9))
toto(1:ngal,1)=float(galid_tab(1:ngal))
toto(1:ngal,2)=sfrgal10_tab (1:ngal)
toto(1:ngal,3)=sfrgal100_tab (1:ngal)
toto(1:ngal,4)=sfrgal1000_tab(1:ngal)
toto(1:ngal,5)=agegal_tab(1:ngal)
toto(1:ngal,6)=mgal_tab(1:ngal)*1d11
toto(1:ngal,7)=xgal_tab(1:ngal)*3.08d24/unit_l+0.5d0
toto(1:ngal,8)=ygal_tab(1:ngal)*3.08d24/unit_l+0.5d0
toto(1:ngal,9)=zgal_tab(1:ngal)*3.08d24/unit_l+0.5d0
write(11)toto
我试图使用以下方式读取数据:
dt = np.dtype([('galid', float), ('sfrgal10', float), ('sfrgal100', float),('sfrgal1000', float), ('agegal', float), ('mgal', float), ('xgal', float), ('ygal', float), ('zgal', float)])
numpy.fromfile(filepath, dtype=dt, count=-1, sep='')
但我得到的价值确实没有任何意义。我应该得到的价值是:
galid ~ 1-120000
mgal ~ 0-2
xgal, ygal, zgal ~ -50 - +50
我也尝试使用np.float16
和'<f8'
代替浮点数,价值观不同,但仍然没有多大意义。
我也尝试过使用:
with open(filepath, mode='rb') as file: # b is important -> binary
fileContent = file.read()
data = struct.unpack("fffffffff", fileContent[:36])
print(data)