2017-02-16 5 views
-2

ich diese Schnipsel Python-Code haben, unten, wo ich versuche Winde auf einer Quadratwurzel Formel zur Berechnung zugrunde:einen Schwimmer Quadratwurzel in Python Berechnung

import numpy as np 
    import sys 
    import math 

    data = np.loadtxt(array.csv, dtype='str',delimiter=',', skiprows=1, usecols=(0,1)) 

    u = data[:,6].astype(float) 
    v = data[:,7].astype(float) 
    wind=np.array([]) 

    for t in range(0,3): 
     winds=float(math.sqrt((float(u[t])*float(u[t]))+ (float(v[t])*float(v[t])))) 
     wind = np.append(wind,float(winds)) 
     print "u is ",u[t]," v is ",v[t]," wind is ",float(winds) 

der CSV-Datei wie folgt:

0.9999,0.333 
0.9566,0.13 
0.9999,0.053 

Jetzt aus irgendeinem Grund, warum ich versuchen, den Wert Winde in dem obigen Code zu berechnen ich nur 1.

Wenn ich die Arrays u und v in den Code selbst wie folgt definieren:

u[0]=0.9999 
u[1]=0.9566 
u[2]=0.9999 

v[0]=0.333 
v[1]=0.13 
v[2]=0.053 

Ich bekomme schwebende Werte für Winde. Wie kann ich den obigen Code optimieren, so dass ich einen schwebenden Wert für Winde in dem obigen Code erhalten kann, wenn man u und v aus einer CSV-Datei ableitet? Die csv-Dateien, die ich schließlich verwenden werde, werden insgesamt 40 u und v-Werte haben.

+0

Ihr Code hat einen SyntaxError ('IndentationError: unerwarteter Einzug in Zeile 2'). Und anstatt mehr "Teile" zu deiner Frage hinzuzufügen, versuche das [mcve] mit einem speziellen Fokus auf ** minimal ** zu finden. Das erfordert, dass Sie den Schritt finden, der nicht wie erwartet funktioniert (bitte geben Sie auch an, was Sie erwarten und was Sie stattdessen erhalten)! – MSeifert

Antwort

0

Sie können dort alle float Anrufe müssen (math.sqrt immer einen Schwimmer wieder!), Und Sie sicherlich brauchen keine explizite Schleife zu tun, wenn Sie mit NumPy:

import numpy as np 

u = np.array([0.9999, 0.9566, 0.9999]) 
v = np.array([0.333, 0.13, 0.053]) 

wind = np.hypot(u, v) # equivalent to "sqrt(u**2 + v**2)" 
wind # array([ 1.05389231, 0.96539296, 1.00130366]) 

Aber Mit numpy musst du vorsichtig sein, was deine Arrays sind. Wenn Sie Integer-Arrays verwenden, konvertiert numpy das zu speichernde Array in den dtype des Arrays. (zum Beispiel 1.1 -> 1)