scipy.io.FortranFile.

读取记录#

FortranFile.read_record(*dtypes, **kwargs)[源代码][源代码]#

从文件中读取给定类型的记录。

参数:
*数据类型dtypes, 可选

指定数据大小和字节序的数据类型。

返回:
数据ndarray

一个一维数组对象。

Raises:
FortranEOFError

表示没有更多记录可用

Fortran格式错误

在记录过程中遇到文件结束时发出信号

注释

如果记录包含多维数组,您可以在 dtype 中指定大小。例如:

INTEGER var(5,4)

可以用以下方式读取:

read_record('(4,5)i4').T

请注意,此函数**不**假设文件数据为Fortran列主序,因此您需要(i)在读取时交换维度顺序,以及(ii)转置结果数组。

或者,您可以将数据读取为一维数组,并自行处理顺序。例如:

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')