向fi写入列表或数组

2024-09-30 03:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

示例温度文本文件:

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”命令的软件,在每次程序循环(进入文本文件)时生成一个值网格。然后我从这个文本文件中取出一个特定的列并将其添加到“stokes_list”。最后,我转置数组(或它是什么)以便列变成行。在


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

^{pr2}$

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

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

有人能帮我做这个吗?在


Tags: columnsnameintxt列表for数组temp
3条回答

这不是创建或转置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)

您不是试图编写元组列表,而是编写一个具有灵活数据类型的numpy数组(void,在本例中,与您的TypeError相对应)。灵活的数据类型没有预定义的大小,因此在保存之前,您应该决定要使用哪个数据类型来存储数组。例如,假设要将数据存储为int16,可以执行以下操作:

your_array.astype('int16').tofile(filename)

我觉得应该行得通。在

join需要字符串数组。您的第三行应该是:

f.write('\t'.join(str(cell) for cell in row)+'\n')

如果需要,可以在一个语句中完成整个操作:

^{pr2}$

相关问题 更多 >

    热门问题