scipy.io.FortranFile.

read_record#

FortranFile.read_record(*dtypes, **kwargs)[source]#

從檔案讀取給定類型的記錄。

參數:
*dtypesdtypes,選用

指定資料大小和位元組順序的資料類型。

返回:
datandarray

一維陣列物件。

引發:
FortranEOFError

表示沒有更多記錄可用

FortranFormattingError

表示在記錄中途遇到檔案結尾

另請參閱

read_reals
read_ints

註解

如果記錄包含多維陣列,您可以在 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')