Skip to main content
 首页 » 编程设计

python之将列表或数组写入文件

2025年05月04日14me-sa

temp.txt 文件示例:

File: t091110_065921.SFTC Src: J1903+0925 Nsub: 1 Nch: 1 Npol: 4 Nbin: 1024 RMS: 0.00118753
0 0 0 0.00148099 -0.00143755 0.000931365 -0.00296775
0 0 1 0.000647476 -0.000896698 0.000171287 0.00218597
0 0 2 0.000704697 -0.00052846 -0.000603842 -0.000868739
.
.
etc..

谢谢!


为了回应这是如何生成的,我使用了以下代码:

for i in range(numrows): 
    epoch_name = y['filename'][i] 
    os.system('pdv -t {0} > temp.txt '.format(epoch_name)) 
    stokes_line = np.genfromtxt('temp.txt', usecols=3, dtype=[('stokesI','float')], skip_header=1) 
    stokes_list.append(stokes_line) 
stokes_columns = zip(*stokes_list) 

因此,我使用其他一些带有“pdv”命令的软件在程序每次循环(进入文本文件)时生成一个值网格。然后我从这个文本文件中取出 1 个特定的列并将其添加到“stokes_list”。最后,我转置数组(或任何数组),使列变成行。


我在 Python 中有一个列表列表(或任何数组,我真的不了解术语),看起来像这样:

[((1,)(2,)(3,)),((4,)(5,)(6,)),((7,)(8,)(9,))] 

首先,我不确定为什么方括号内有括号,而不是方括号内有方括号。其次,我不知道为什么数字后面有一个逗号,而它们本身出现在括号中。无论如何 - 也许需要更多的上下文来回答这个问题。但我真正的问题是,我正在尝试将其写入以下格式的文件中:

1   2   3   
4   5   6   
7   8   9   

我正在尝试:

with open('final.txt','w') as f: 
    for row in stokes_columns: 
        f.write('\t'.join(row)+'\n') 

其中“stokes_columns”是顶部数组/列表的名称。

我收到错误消息:

f.write('\t'.join(row)+'\n') 
TypeError: sequence item 0: expected string, numpy.void found 

谁能帮我解决这个问题?

请您参考如下方法:

这不是创建或转置 numpy 矩阵的方法(特别是因为它不是 numpy 矩阵——它是 numpy 向量的常规列表)。尝试以下操作:

stokes_list = np.array([]) 
for i in range(numrows): 
    epoch_name = y['filename'][i] 
    os.system('pdv -t {0} > temp.txt '.format(epoch_name)) 
    stokes_line = np.genfromtxt('temp.txt', usecols=3, dtype=[('stokesI','float')], skip_header=1) 
    stokes_list = vstack(stokes_list, stokes_line) 
 
stokes_columns = np.transpose(stokes_list)