从指定大小的数组更改为动态数组?
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)
我有一个程序在日志文件中查找某些值并将它们列出来。本质上,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)