【问题标题】:Change from array of specified size to dynamic array?从指定大小的数组更改为动态数组?
【发布时间】:2021-09-04 22:43:33
【问题描述】:

我有一个程序在日志文件中查找某些值并将它们列出来。本质上,一个 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 行的任何想法?

【问题讨论】:

    标签: python arrays numpy append


    【解决方案1】:

    制作一个列表并将项目附加到这些列表中。当您到达文件末尾时,将列表列表转换为 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 2012-04-17
      • 2012-03-15
      • 2012-03-26
      • 2012-09-15
      • 2011-06-17
      相关资源
      最近更新 更多