私はPythonにかなり慣れていません。基本的に、数値の 2D 配列を入力ファイルに挿入して、新しい出力ファイルを作成しようとしています。
入力データは次のようにフォーマットされます。
!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 ループを理解しています)。だから私は自分が知っていることに固執しました)。しかし、私はすべての提案を受け入れます。ありがとう!