我对python很新,并且负责从大型二进制文件中提取观察数据(这个是470M,但它们可能更大)。
我的问题是文件中的数据结构意味着我需要先读取一个元素才能确定读取下一组元素的次数。我目前正在使用循环并调用numpy.fromfile()很多,这是我的代码中最慢的部分,占用了大约5秒的运行时间。我的任务是让时间低于1秒!
文件结构如下,整个数据类型各不相同:
快照计数(N)
网格点数(G)
我目前正在为上面的第2部分做这个:其中dtype只是所用特定dtype的代表。
data = {}
data['Grid_Point_counter'] = numpy.fromfile(file,dtype2,1)
number_gridpoints = data['Grid_Point_counter'][0]
if number_gridpoints > 0
gridpoint_data = []
for gridpoint in range(0,number_gridpoints)
grdpt_data = numpy.fromfile(file,dtype3,1)
number_bt_data = grdpt_data[0][-1]
if number_bt_data > 0:
bt_data_block = numpy.fromfile(data_loc,dtype4, num_bt_data)
gridpoint_data.append([gpt_data, bt_data_block])
data['Grid_Point_Data'] = gridpoint_data
如果你们中任何一个知识渊博的人都能提供帮助那就太棒了!