如何在Python中部分读取2d卫星文件?(二进制,fromfile)

如何在Python中部分读取2d卫星文件?(二进制,fromfile),python,arrays,numpy,binary,fromfile,Python,Arrays,Numpy,Binary,Fromfile,我有很多卫星数据是由二维组成的 (I)将H5转换为不包含纬度信息的2d阵列数据 我另外制作了Lat/Lon信息数据。) 我知道一个数据中的真实Lat/Lon协调和网格协调 如何部分读取Python中的2d卫星文件? “numpy.fromfile”通常用于读取二进制文件 若在numpy.fromfile中使用option作为count,则可以部分读取二进制文件 但是,我想跳过一个数据中的前端记录,以便保存内存 例如,我有3x3 2d数据,如下所示: python a=[[1,2,3] [4,5,

我有很多卫星数据是由二维组成的

(I)将H5转换为不包含纬度信息的2d阵列数据 我另外制作了Lat/Lon信息数据。)

我知道一个数据中的真实Lat/Lon协调和网格协调

如何部分读取Python中的2d卫星文件?

“numpy.fromfile”通常用于读取二进制文件

若在numpy.fromfile中使用option作为count,则可以部分读取二进制文件

但是,我想跳过一个数据中的前端记录,以便保存内存

例如,我有3x3 2d数据,如下所示:

python

a=[[1,2,3] [4,5,6] [7,8,9]]

我刚刚用Python阅读了[3][0]。(结果=7)

当我在Fortran中读取文件时,我使用了“rec,rec”

Fortran

打开(1,file='exsmaple.bin',access='direct',recl=4)!recl=4表示4个B类型

读取(1,rec=lat*x-lon)文件名

关闭(1)

lat表示数据中纬度的位置。 (上述exsample中的lat=3;Fortran中的起始编号为1。)

lon表示经度在数据中的位置。 (上述exsample中lon=1;Fortran中的起始编号为1。)

x是第二行。 (x=3,上例,数组为3x3)

我可以读取文件,并且只使用4字节的内存

我想知道Python中类似的方法

请给我一些特别的信息以节省时间和记忆


谢谢你阅读我的问题

2016.10.28。 解决方案

python 数据=[1,2,3,4,5,6,7,8,9],数据类型=int8,文件名=名称

a=np.memmap(名称,dtype='int8',mode='r',shape=(1),offset=6)

打印[0]

结果:7

要读取.h5文件,请执行以下操作:

import h5py
ds = h5py.File(filename, "r")
variable = ds['variable_name']

很难理解你的描述。一些适当的代码缩进将有助于解决您的英语语言问题

所以你有H5文件的数据。最简单的方法是
h5py
将其加载到Python/numpy会话中,并从这些数组中选择必要的数据

但听起来好像您已经将此数据的一部分写入了一个“普通”二进制文件。知道你是怎么做到的可能会有帮助。还有,这个2d是什么样子的

np.fromfile
读取文件时,将其视为1d。你能读懂这个文件吗,最多能读懂一些
count
?是否使用正确的
d类型


np.fromfile
接受打开的文件。因此,我认为您可以打开文件,使用
seek
向前跳,然后从那里读取
count
项。但是我还没有测试过这个想法。

它是哪种类型的文件。h5。北卡罗来纳州。xml?首先,它是H5数据。我将H5转换为二维阵列数据(float32)。感谢您阅读我的问题并友好地回答。谢谢您的回答!我找到了解决办法。我可以使用“memmap”从数组中提取值。