2016-08-05 34 views
0

ich eine Datei haben, die wie folgt aussieht (Spalten ar Koordinaten x, y, z und Linien repräsentiert einige Objekte):ersetzt Linien in Datei

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 

Ich möchte:

1) multiplizieren zweiten Linie um 3;

2) Finden Sie die Unterschiede zwischen neuen Werten in Zeile 2 und alten Werten (die ich durch Multiplikation erhalten habe) in den gleichen Spalten (dh die Differenz zwischen der zweiten Zeile der Spalte ein neuer Wert und dem alten Wert, der zweiten Spalte der zweiten Zeile) und alt usw.)

3) Werte in Zeile 2 durch neue Werte ersetzen;

4) fügen Sie die Unterschiede, die ich auf die Werte bekam in den Zeilen 4 und 5.

So sollte die Ausgabe wie folgt aussehen:

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 

Was ich so weit gekommen ist:

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 

Ich versuchte a.replace (x_old, x), aber es hat nicht funktioniert und ich habe wirklich in diesem stecken.

+1

Ist das Hausaufgaben? Warum machst du es mit numpy? – Janekmuric

+0

Nein, es sind keine Hausaufgaben. Ich renne einige Berechnungen und gab viele Dateien wie diese, die ich ändern muss. Ich benutze numpy, weil ich dachte, dass ich Arrays verwende. Sorry, ich bin in Python sehr nee, also mache ich wahrscheinlich dumme Sachen. – cinnamon

+1

Bitte verwenden Sie korrekte Rechtschreibung und Grammatik. -1 –

Antwort

0

Wenn Sie numpy verwenden, hier ist ein Beispiel, das Sie auf arbeiten können: Last der gesamten Daten als numpy Array „ao“

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