我正在尝试使用Python读取二进制文件。这是我使用的代码:
fb = open(Bin_File, "r")
a = numpy.fromfile(fb, dtype=numpy.float32)
但是,我在数组末尾得到零值。例如,对于其中的情况下nrows=296
,并ncol=439
作为一个结果,len(a)=296*439
我获得零个值a[-922:]
。我知道这些值应该是R中受信任的代码中的noData(在此示例中为-9999)。有人知道为什么我得到这些无意义的零吗?
PS:我不知道它是在不相关,但是len(a)
是nrows*ncols+2
!我必须使用这两个方法来摆脱它们,a = a[0:-2]
以便在使用它们将它们重塑为行和列时a_reshape = a.reshape(nrows, ncols)
不会出现错误。
打开文件以二进制形式读取时,应使用模式"rb"
而不是"r"
。
这是文档的一些背景。在linux机器上,您不需要,"b"
但不会受伤。在Windows计算机上,您必须使用"rb"
二进制文件。
另请注意,使用Fortran的“未格式化”二进制输出格式时,获得的两个额外条目是常见的错误/功能。在此模式下给出的每个写语句将产生一条记录,该记录被两个4字节的块包围。
这些块代表整数,这些整数列出了未格式化数据块中的字节数。例如,[223] [223个数据字节] [223]。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句