首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取二进制文件时使用numpy wrong文件获取错误的零值

读取二进制文件时使用numpy wrong文件获取错误的零值
EN

Stack Overflow用户
提问于 2014-07-28 20:57:19
回答 1查看 1.8K关注 0票数 1

我试图用Python读取一个二进制文件。这是我使用的代码:

代码语言:javascript
复制
fb = open(Bin_File, "r")
a = numpy.fromfile(fb, dtype=numpy.float32)

但是,我在数组的末尾得到零值。例如,对于nrows=296ncol=439以及结果是len(a)=296*439的情况,我得到了a[-922:]的零值。我知道这些值应该是noData (在本例中是-9999),它来自R中一段可信任的代码,有人知道我为什么要得到这些无意义的零吗?

P.S:我不确定它是否有关联,但len(a)nrows*ncols+2!我必须使用a = a[0:-2]消除这两种情况,这样当我使用a_reshape = a.reshape(nrows, ncols)将它们重新组合为行和列时,就不会出现错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 21:15:59

当打开文件以二进制方式读取时,您应该使用模式"rb"而不是"r"

以下是文档的一些背景信息。在linux机器上,您不需要"b",但不会有任何伤害。在Windows机器上,必须对二进制文件使用"rb"

还请注意,在使用Fortran的“未格式化”二进制输出格式时,您得到的两个额外条目是一个常见的bug/特性。在这种模式下给出的每个写语句都将生成一个记录,该记录被两个4字节块包围。

这些块表示列出未格式化数据块中字节数的整数。例如223 223。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25004225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档