【问题标题】:How to append numpy x and y values into a text file如何将 numpy x 和 y 值附加到文本文件中
【发布时间】:2019-05-09 20:06:07
【问题描述】:

我有一些代码在无限循环中创建一个 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 文档中。

【问题讨论】:

  • 对不起,我添加了我尝试过的内容。我认为这是正确的功能,但我仍然不擅长阅读文档来做我想做的事情。

标签: python numpy


【解决方案1】:

首先,我会将值压缩为 (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 循环(在终端显示中)附加到文本文件的内容

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

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()

输出:

【讨论】:

  • OP 询问的是如何以某种格式将数据写入文件,而不是如何打印。
  • 刚刚意识到这一点,写了一个答案建议在开放语句中使用 a
  • 谢谢,Zip 功能正是我想要的,它可以将数据直接放入文本文件中。
【解决方案2】:

你可以这样做——它并不完整,因为它只会附加到旧文件中。另一个问题是它不会真正写入文件,直到你关闭它。如果确实需要每次循环保存文件,则需要另一种解决方案。

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()

如果您不需要为循环中的每个步骤编写文件,我推荐此选项。它要求 Numpy 数组的大小相同。

import numpy as np

array1 = np.arange(1,5,1)
array2 = np.zeros(array1.size)

variable_to_ID_file = 3.

file_name_str = 'Foo_Var{0:.0f}.txt'.format(variable_to_ID_file)
# Pick the delimiter you desire.  I prefer tab  '/t'
np.savetxt(file_name_str, np.column_stack((array1, array2)), delimiter=', ')  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2017-07-01
    • 2021-06-21
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多