从指定大小的数组更改为动态数组?

Change from array of specified size to dynamic array?

我有一个程序在日志文件中查找某些值并将它们列出来。本质上,50000 行文件中的一行看起来像这样:

Step Elapsed Temp Press Volume TotEng KinEng PotEng E_mol E_pair Pxx Pyy Pzz Pxz Pxy Pyz 
   0        0          298   -93.542117    448382.78   -67392.894     17986.81   -85379.704    12349.955   -97729.659   -313.09273    44.936408    -12.47003    100.97953    -215.4029    254.07517 
  10       10    301.05619   -14.956923    448382.78   -66191.142    18171.277   -84362.419    12474.283   -96836.702   -56.794471    103.79453   -91.870824    300.09707   -27.638439     196.2738 

执行搜索和追加的代码如下所示:

line=fp.readline()

while line:
    line=fp.readline()
    words = line.split()
    if (words[0]=="Step"):
        break

numcol = len(words)
header = words

data = numpy.zeros((numcol,100000))

ln = 0

while line:
    line=fp.readline()
    words=line.split()
    if(words[0]=="Loop"):
        break

    for i in range(numcol):
        data[i][ln]=(float(words[i]))

    ln_original = ln
    ln = ln +1

目前,我正在指定数组中的列数。我似乎无法弄清楚如何继续工作。关于我可以更改什么以便数组可以动态地处理各种长度的日志文件,而不是在数组中指定 1,000,000 行开始,有什么想法吗?

创建一个列表列表并将项目附加到这些列表中。当您到达文件末尾时,将列表列表转换为 np.ndarray。 变化

data = numpy.zeros((numcol,100000))

data = [[] for i in range(numcol)]

并改变

data[i][ln]=(float(words[i]))

data[i].append(float(words[i]))

在代码末尾添加

data = np.array(data)