【发布时间】:2014-09-20 04:05:55
【问题描述】:
我正在尝试使用 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)。有人知道我为什么会得到这些无意义的零吗?
P.S:我不确定它是否相关,但len(a) 是nrows*ncols+2!我必须使用a = a[0:-2] 删除这两个,这样当我使用a_reshape = a.reshape(nrows, ncols) 将它们重新整形为行和列时,我不会收到错误。
【问题讨论】:
-
尝试使用
"rb"标签打开而不是"r"? -
hmmm,你可能应该用 R 标签标记这个问题,并发布你的 R 读取命令或实际编写文件的代码。
-
可能是编写该文件的软件在原始二进制文件之外添加了 2 个额外字段?我知道(默认情况下)Fortran 90 添加了两个块来指示有多少数据。
-
@Gabriel 使用
"rb"而不是"r"解决了所有问题。 numpy 数组现在完全有意义。您介意将您的评论移至回答以便我投票吗? -
添加了答案和一些解释
标签: numpy binary ascii fromfile