在每个迭代步骤后将计算数据写入 txt/csv

Posted

技术标签:

【中文标题】在每个迭代步骤后将计算数据写入 txt/csv【英文标题】:Writing computed data to a txt/csv after each iterations step 【发布时间】:2020-02-15 10:35:08 【问题描述】:

考虑以下简单示例:

x1, x2, x3, x4 = 0, 0, 0, 0
index = 0

for i in range(3):
    index += 1
    x1 += 2
    x2 += 2
    x3 += 2
    x4 += 2

如何创建一个 txt 或 csv 文件,在每次迭代后将 x1、x2、x3、x4 和索引存储在单独的列中(总共 5 个)。是否也可以给每列一个标题?

最终结果应该是这样的

Index    Data1    Data2    Data3    Data4  
1        2        2        2        2
2        4        4        4        4
3        6        6        6        6

将存储的数据很好地分开很重要,因为它稍后将用于另一个计算。如果具有存储值的变量称为“data_”,我想应用切片操作,例如data_[:,0] = [1,2,3]。


编辑: @abc 我试过你的方法,但它不起作用

import pandas as pd
from numpy import array

index = 0 

for i in range(3):
    index += 1
    x1 += 2
    x2 += 2
    x3 += 2
    compact = [[index, x1, x2, x3]]
    pd.DataFrame(compact, columns=   ['Index','Data1','Data2','Data3']).to_csv('example.csv',index=False)

example.csv 文件只会获取最后的计算值,例如

在我的实际程序中,不可能先存储所有计算值(10^6 次迭代),然后才能保存它们。每次迭代后都需要存储这些值!

【问题讨论】:

你试过pandas.to_csv()吗? 【参考方案1】:

你需要的是熊猫:

Import pandas as pd
Import os

x1, x2, x3, x4 = 0, 0, 0, 0
index = 0
Index,Data1,Data2,Data3,Data4=[],[],[],[],[]
for i in range(3):
    index += 1
    x1 += 2
    x2 += 2
    x3 += 2
    x4 += 2
    df=pd.DataFrame([index,x1,x2,x3,x4],columns=['Index','Data1','Data2','Data3','Data4'])
    df.to_csv('data.csv',index=False,mode='a')

data.csv 文件:

Index,Data1,Data2,Data3,Data4
1,2,2,2,2
2,4,4,4,4
3,6,6,6,6

【讨论】:

@Miradius,根据您的编辑进行了编辑。它现在应该可以工作了。 我在 python 3.7.4 中尝试了您编辑的代码并得到以下错误: ValueError: Shape of passed values is (5, 1), indices imply (5, 5)【参考方案2】:

您可以为此使用pandas。这假设拥有所有数据。示例。

res = [[1,2,2,2,2],[2,4,4,4,4]]
pd.DataFrame(res, columns=['Index','Data1','Data2','Data3','Data4']).to_csv('example.csv',index=False)

如果您想在每次迭代后存储新行,您可以做的是:

with open('res.csv','w') as f:
   f.write('Index,Data1,Data2,Data3\n')
   # for each iteration
        # compute new row
        f.write(",".join(map(str,row)))
        f.write("\n")

【讨论】:

以上是关于在每个迭代步骤后将计算数据写入 txt/csv的主要内容,如果未能解决你的问题,请参考以下文章

在 OpenCL 中写入全局内存

Python - 迭代计算的迭代

如何计算以下 #Vus、AVG 事务时间、loadrunner 中多个脚本的迭代?

存储每次迭代的值 Numpy Python

迭代时间timestep是啥意思?

每次迭代后存储矩阵