如何将numpy x和y值附加到文本文件中

时间:2019-05-09 10:57:00

标签: python numpy

我有一些代码可以在无限循环中创建x变量(帧)和y变量(像素强度),直到程序结束。我想将每个循环的这些值附加到txt.file中,以便以后可以使用数据。数据以numpy数组的形式出现。

例如说5个循环(5帧)后我得到这些值

1 2 3 4 5 (x values) 
0 0 8 0 0 (y values)

我希望它在每个循环中将它们附加到文件中,以便在关闭程序后得到:

1, 0
2, 0
3, 8
4, 0
5, 0

最快的方法是什么?

到目前为止,我已经尝试过np.savetxt('data.txt', x),但这只会将最后一个值保存在循环中,并且不会在每个循环中添加数据。有没有一种方法可以更改此功能,或者可以使用其他功能将数据添加到txt文档中。

2 个答案:

答案 0 :(得分:2)

首先,我将这些值压缩到(x,y)坐标形式中并将它们放入列表中,以便将它们附加到文本文件中变得更加容易,在您的程序中,您将不需要这样做,因为事先在循环中生成了x和y。

x = [1, 2, 3, 4 ,5] #(x values) 
y = [0, 0, 8, 0, 0] #(y values)

coordinate = list(zip(x,y))
print(coordinate)

因此,我使用了Zip函数,将样本结果作为(x_n,y_n)存储到列表中以备后用。

这是我要在文本文件中附加以下for循环的内容(在终端显示中)

enter image description here

在循环本身中,您可以使用:

for element in coordinate: #you wouldn't need to write this since you are already in a loop
 file1 = open("file.txt","a") 
 file1.write(f"{element} \n") 
 file1.close()

输出: enter image description here

答案 1 :(得分:0)

您可以执行以下操作-它不完整,因为它只会附加到旧文件中。另一个问题是,在关闭文件之前,它实际上不会写入文件。如果您确实需要每次在循环中保存文件,则需要另一种解决方案。

private void Output_Class(IEnumerable<Demo_Interface> inter_input)
{
    // do your thing
}

// Method invocation
Output_Class(new_main_class.class_list_1);

如果不需要为循环中的每个步骤编写文件,则建议使用此选项。它要求Numpy数组的大小相同。

import numpy as np

variable_to_ID_file = 3.
file_name_str = 'Foo_Var{0:.0f}.txt'.format(variable_to_ID_file)

# Need code here to delete old file if it is there
# with proper error checking, or write a blank file, then open it in append mode.

f_id = open(file_name_str, 'a')

for ii in range(4):
    # Pick the delimiter you desire.  I prefer tab  '/t'
    np.savetxt(f_id, np.column_stack((ii, 3*ii/4)), delimiter=', ', newline ='\n')

f_id.close()