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)
