我有一個包含平面位置記錄的二進制文件。 每個記錄看起來像:使用Numpy fromfile和給定的偏移量讀取二進制文件
0x00: Time, float32
0x04: X, float32 // X axis position
0x08: Y, float32 // Y axis position
0x0C: Elevation, float32
0x10: float32*4 = Quaternion (x,y,z axis and w scalar)
0x20: Distance, float32 (unused)
因此,每個記錄是32字節長。
我想要一個Numpy數組。
在偏移1859處有一個無符號整數32(4個字節),它表示數組的元素個數。 12019在我的情況。
我不關心(現在)的標題數據(前偏移1859)
陣列僅開始於1863年的偏移(= 1859 + 4)。
我定義我自己numpy的D型像
dtype = np.dtype([
("time", np.float32),
("PosX", np.float32),
("PosY", np.float32),
("Alt", np.float32),
("Qx", np.float32),
("Qy", np.float32),
("Qz", np.float32),
("Qw", np.float32),
("dist", np.float32),
])
而且我閱讀使用fromfile
文件:
a_bytes = np.fromfile(filename, dtype=dtype)
但我看不出有任何參數,以提供fromfile
通過抵消。
謝謝。它解決了我的問題。我也注意到'data = np.memmap(filename,dtype = dtype,mode ='r',offset = offset_array,shape = N)' ' – scls
對,如果它是一個大文件,那麼memmap可能是走。 – reptilicus