替换文件中的行

时间:2016-08-05 15:38:25

标签: python arrays replace lines

我有一个看起来像这样的文件(列ar坐标x,y,z和行代表一些对象):

 1.02      0.63      0.0003 
-1.34      0.61      0.0002
 0.0       0.0       0.0
-1.91      0.25      0.87
-1.32      1.70      0.0
 0.02     -1.12     -0.06 

我想:

1)将第二行乘以3;

2)找到第2行中的新值与旧值n(我通过乘法获得的值)在相同列中的差异(即第二行的第一列与新值之间的差异,secons行的第二列新值和老等)

3)用新值替换第2行中的值;

4)将我得到的差异加到第4和第5行的值中。

所以输出应该如下:

 1.02      0.63      0.0003
-4.02      1.83      0.0006
 0.0       0.0       0.0
-4.59      1.47      0.8704
-4.00      2.92      0.0004
-2.66      0.10     -0.0596

到目前为止我得到的是:

import numpy as np 

a=np.loadtxt('geometry.in')
C=s[1]
b=np.array((a)[C]) #read second line as array
x_old=b[0] #define coordinate x
y_old=b[1] #define coordinate y
z_old=b[2] #define coordinate z

C_new=b*3 #multiplying all line by 3

x=C_new[0] #defining new values in columns of the line
y=C_new[1]
z=C_new[2]

dx=x-x_old #the differene that I need to add to the first column of lines 4 and 5
dy=y-y_old
dz=z-z_old

我尝试了a.replace(x_old,x),但它没有用,我真的陷入了困境。

1 个答案:

答案 0 :(得分:0)

如果你必须使用numpy,这是一个你可以使用的例子: 将整个数据加载为numpy数组“ao”

    old2 = ao[1,:]
    new2 = ao[1,:]*3
    diff = new2 - old2
    ao[1,:] = new2
    ao[3:,:] = ao[3:,:] + diff