Frenchy 提出的方法有效,但我们拥有的记录数量不够快。最终的代码要快很多:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Create a data type with the binary data format and desired column names
dataType = [
('pType', 'i4'),
('pSize', 'i4'),
('frNumber','i4'),
('scType', 'i4'),
('frRate', 'f4'),
('vStatus', 'i4'),
('unitsIndex', 'i4'),
('unitConvFactor', 'i4'),
('ptpScanStart_sec', 'i4'),
('ptpScanStart_nsec', 'i4'),
('exTrigger_usec', 'u4')
]
# add the 8 temperatures to datatype
for i in range(8):
dataType.append(('T'+str(i), 'f4'))
# add the 64 pressures to datatype
for i in range(64):
dataType.append(('P'+str(i), 'f4'))
# append last items to data type
dataType.append(('frTime_sec', 'i4'))
dataType.append(('frTime_nsec', 'i4'))
dataType.append(('exTrigger_sec', 'i4'))
dataType.append(('exTrigger_nsec', 'i4'))
dt= np.dtype(dataType)
# read data
pd.DataFrame.from_records(np.fromfile('./data/700hz_180sec.dat', dtype=dt))