numpy.savetxt的问题

0 投票
1 回答
1484 浏览
提问于 2025-04-17 20:44

我正在使用 Python 2.6,想用 numpy 的 savetxt 功能把一个向量写入文件。

在我大学时写的一个旧程序中,我需要从文件中读取数据,把最后一列从度数转换成弧度,然后把结果写到另一个文件里;这是我写的代码:

import math
import numpy as np

vec=[]  
with open("In.txt") as f:
    for line in f:
        a = float(line.split()[0])
        b = float(line.split()[1])
        c = float(line.split()[2])
        rad = math.pi/2.-(float(line.split()[3])*math.pi/180.)
        vec.append((a,b,c,rad))
np.savetxt("Out.txt",vec)

一切都按预期进行:在 Out.txt 文件中,我的数据正确地以表格形式显示。

现在我想做类似的事情:我从一个文件中读取数据,进行一些操作,然后把结果写入一个文件:

fout=open("Out.txt",'a')

for n in range(nsteps)
  with open("In.txt") as fin:
    for line in fin:
      #long operations: at the end I have a vector par with 4 elements
      #I want to write this vector as a new line in my output file
      np.savetxt(fout,par)
fout.close()

问题是输出结果只有一列:

par[0]
par[1]
par[2]
par[3]
par[0]
par[1]
...

如果我在每一步都在终端输入 par,它会正确显示为:

[par[0],par[1],par[2],par[3]]
...

我到底哪里做错了呢?

1 个回答

1

你的列表需要用不同的格式(看看括号的样子):

par = [[1, 2, 3, 4, 5, 6]]
np.savetext(fout, par, delimiter="\t")

撰写回答