相关疑难解决方法(0)

是否可以使用python将磁盘上的不连续数据映射到数组?

我想将硬盘上的大型Fortran记录(12G)映射到numpy数组.(映射而不是加载以节省内存.)

存储在fortran记录中的数据不是连续的,因为它除以记录标记.记录结构为"标记,数据,标记,数据,......,数据,标记".数据区域和标记的长度是已知的.

标记之间的数据长度不是4个字节的倍数,否则我可以将每个数据区域映射到数组.

可以通过在memmap中设置偏移来跳过第一个标记,是否可以跳过其他标记并将数据映射到数组?

为可能的模糊表达道歉并感谢任何解决方案或建议.


5月15日编辑

这些是fortran无格式文件.存储在记录中的数据是(1024 ^ 3)*3 float32数组(12Gb).

大小超过2千兆字节的可变长度记录的记录布局如下所示:

数据结构

(有关详细信息,请参阅此处 - > [记录类型] - > [可变长度记录]部分.)

在我的情况下,除了最后一个,每个子记录的长度为2147483639字节,相隔8个字节(如上图所示,前一个子记录的结束标记和后一个子标记的开始标记,8个字节)总计).

我们可以看到第一个子记录以某个浮点数的前3个字节结束,第二个子记录以其余的1个字节开始,如2147483639 mod 4 = 3.

python arrays fortran numpy hdf5

8
推荐指数
1
解决办法
1395
查看次数

标签 统计

arrays ×1

fortran ×1

hdf5 ×1

numpy ×1

python ×1