使用 savetxt 时添加到现有内容(避免覆盖)PYTHON

ryh*_*h12 2 python arrays numpy python-3.x

我正在使用 savetxt 将名为“newresult”的 numpy 数组保存到文件中。

np.savetxt("test.csv", newresult, delimiter=",")
Run Code Online (Sandbox Code Playgroud)

'newresult' numpy 数组在一个循环内,所以在每个循环中 newresult 的内容都会改变。我想将新内容添加到 test.csv 文件中。

但是在每个循环中

 np.savetxt("test.csv", newresult, delimiter=",")
Run Code Online (Sandbox Code Playgroud)

正在覆盖 test.csv 的内容,而我想添加到现有内容中。

例如,

循环 1:

 newresult=
   [[ 1  2 3 ]
    [ 12  13  14]]
Run Code Online (Sandbox Code Playgroud)

循环 2

newresult=
      [[ 4  6 8 ]
       [ 19  14  15]]
Run Code Online (Sandbox Code Playgroud)

test.csv 内容是:

  1, 2 ,3
  12,13,14
  4,6,8
  19,14,15
Run Code Online (Sandbox Code Playgroud)

Shi*_*eng 5

第一点:你可以用一个文件句柄设置第一个参数,该句柄在循环之前用a(追加)标志打开。

第二点:savetxt以二进制模式打开文件,所以你必须添加一个b(二进制)标志。

import numpy as np

with open('test.csv','ab') as f:
    for i in range(5):
        newresult = np.random.rand(2, 3)
        np.savetxt(f, newresult, delimiter=",")
Run Code Online (Sandbox Code Playgroud)

如果你想格式化float类型的数据,你可以指定一个格式字符串到fmt的参数savetxt。例如:

import numpy as np

with open('test.csv','ab') as f:
    for i in range(5):
        newresult = np.random.rand(2, 3)
        np.savetxt(f, newresult, delimiter=",", fmt='%.4f')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明