我想将硬盘上的大型Fortran记录(12G)映射到numpy数组.(映射而不是加载以节省内存.)
存储在fortran记录中的数据不是连续的,因为它除以记录标记.记录结构为"标记,数据,标记,数据,......,数据,标记".数据区域和标记的长度是已知的.
标记之间的数据长度不是4个字节的倍数,否则我可以将每个数据区域映射到数组.
可以通过在memmap中设置偏移来跳过第一个标记,是否可以跳过其他标记并将数据映射到数组?
为可能的模糊表达道歉并感谢任何解决方案或建议.
5月15日编辑
这些是fortran无格式文件.存储在记录中的数据是(1024 ^ 3)*3 float32数组(12Gb).
大小超过2千兆字节的可变长度记录的记录布局如下所示:

(有关详细信息,请参阅此处 - > [记录类型] - > [可变长度记录]部分.)
在我的情况下,除了最后一个,每个子记录的长度为2147483639字节,相隔8个字节(如上图所示,前一个子记录的结束标记和后一个子标记的开始标记,8个字节)总计).
我们可以看到第一个子记录以某个浮点数的前3个字节结束,第二个子记录以其余的1个字节开始,如2147483639 mod 4 = 3.