scipy.io.FortranFile.
read_record#
- FortranFile.read_record(*dtypes, **kwargs)[源代码]#
从文件中读取给定类型的记录。
- 参数:
- *dtypesdtypes,可选
指定数据大小和字节序的数据类型。
- 返回:
- datandarray
一个 1-D 数组对象。
- 引发:
- FortranEOFError
指示没有更多记录可用
- FortranFormattingError
指示在记录中途遇到文件结尾
注释
如果记录包含多维数组,则可以在 dtype 中指定大小。例如
INTEGER var(5,4)
可以用以下方式读取
read_record('(4,5)i4').T
请注意,此函数不假设文件数据采用 Fortran 列主序,因此您需要 (i) 在读取时交换维度的顺序,以及 (ii) 转置结果数组。
或者,您可以将数据读取为 1-D 数组并自行处理排序。例如
read_record('i4').reshape(5, 4, order='F')
对于包含多个变量或混合类型的记录(而不是单个标量或数组类型),将它们作为单独的参数给出
double precision :: a integer :: b write(1) a, b record = f.read_record('<f4', '<i4') a = record[0] # first number b = record[1] # second number
如果任何变量是数组,则可以将形状指定为相关 dtype 中的第三项
double precision :: a integer :: b(3,4) write(1) a, b record = f.read_record('<f4', np.dtype(('<i4', (4, 3)))) a = record[0] b = record[1].T
NumPy 还支持这种类型的简短语法
record = f.read_record('<f4', '(3,3)<i4')