2017-02-16 58 views
-2

我已經Python代碼下面這裏,我試圖基於平方根公式來計算風此片段:計算浮動平方根在python

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) 

CSV文件,如下所示:

0.9999,0.333 
0.9566,0.13 
0.9999,0.053 

現在,由於某種原因,爲什麼我嘗試計算在上面的代碼值的風我只得到1

當我定義的數組u和v在代碼本身,如下:

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

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

我得到風的浮動值。 如何調整上述代碼,以便在從csv文件派生u和v時,我可以在上面的代碼中獲得風的浮動值?我將最終使用的csv文件總共有40個u和v值。

+0

您的代碼有一個SyntaxError('IndentationError:行2中的意外縮進]。而不是在你的問題中增加更多的「部分」,試着找到[mcve],特別關注** minimal **。這就要求你找到不能按預期工作的步驟(也請包括你的期望和你得到的結果)! – MSeifert

回答

0

如果你使用NumPy你並不需要所有的float來電那裏(math.sqrt總是會返回一個浮點數!),你肯定不需要做一個明確的循環:

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]) 

但與numpy你必須小心你的陣列是什麼類型。如果你使用的是整數數組,那麼numpy會將要保存的數組轉換爲數組的dtype。 (例如1.1 - > 1)