我对python相当陌生。基本上,我试图将一个二维数字数组插入到输入文件中以创建一个新的输出文件。
输入数据的格式如下:
!TITLE
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
真的,我只是想用一个 3x1 数组替换一个特定的列,比如:
print(newcol_3)
这给了我:
[[1111]
[1111]
[1111]]
我的代码:
Inp_ptr = file('inp_file.dat', 'r')
Inp_data = Inp_ptr.readlines()
firstline = 1
for i in range(firstline,firstline+2):
old_inp[i-firstline] = array(Inp_data[i].split()[0:12])
new_inp = zeros([3,12])
for i in range(0,2):
new_inp[i] = [old_inp[i,0], old_inp[i,1], float(newcol_3[i]), old_inp[i,3], ... old_inp[1,11]]
这给了我我的 3x12 阵列。要将其打印到我尝试过的文件中:
Out_ptr = file('out_file.dat', 'w')
Out_data = Inp_data
row0 = str(new_inp[0])
row1 = str(new_inp[1])
row2 = str(new_inp[2])
Out_data[firstline] = row0
Out_data[firstline+1] = row1
Out_data[firstline+2] = row2
for line in Out_data:
Out_ptr.write(line)
这让我有点接近,但输入仍然以数组(和多行)的形式出现,所以输出看起来像:
!TITLE
[ 0000 0000 1111 0000 0000 0000
0000 0000 0000 0000 0000 0000][ 0000 0000 1111 0000 0000 0000
0000 0000 0000 0000 0000 0000][ 0000 0000 1111 0000 0000 0000
0000 0000 0000 0000 0000 0000]
我正在寻找的是:
!TITLE
0000 0000 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000
我在这里很迷茫,我在网上搜索并尝试了''.join和\n %等的各种组合。我也确信有一种更简单的方法来创建新数据集(我理解for循环所以我坚持我所知道的)。但我愿意接受所有建议。谢谢!