如何在python中加速从大型二进制文件中提取数据

2024-09-28 22:31:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还很陌生,我的任务是从大型二进制文件中提取观测数据(这个文件是470M,但它们可以更大)。你知道吗

我的问题是文件中的数据结构意味着我需要先读取一个元素,然后才能确定读取下一组元素的次数。我目前正在使用循环和调用numpy.fromfile文件()很多,这是我代码中最慢的部分,占用了~5秒运行时的大部分时间。我的任务是把时间控制在1秒以下!你知道吗

文件结构如下,数据类型各不相同:

  1. 快照计数(N)

    • 快照信息重复N次。你知道吗
  2. 网格点数(G)

    • 网格点信息和数据计数器(C)重复G次。
      • 数据重复C次。你知道吗

我目前正在为上面的第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
如果你们当中任何一个知识渊博的人都能帮上忙,那就太好了!你知道吗


Tags: 文件数据numpy信息元素numberdata时间