scipy.io.FortranFile.
read_record#
- FortranFile.read_record(*dtypes, **kwargs)[source]#
從檔案讀取給定類型的記錄。
- 參數:
- *dtypesdtypes,選用
指定資料大小和位元組順序的資料類型。
- 返回:
- datandarray
一維陣列物件。
- 引發:
- FortranEOFError
表示沒有更多記錄可用
- FortranFormattingError
表示在記錄中途遇到檔案結尾
另請參閱
註解
如果記錄包含多維陣列,您可以在 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')