2017-02-16 3 views
-2

フロート平方根を計算する私は平方根の式に基づいて風を計算しようとしたところ以下の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行目')を持っています。そしてあなたの質問にもっと多くの「部品」を加えるのではなく、** minimal **に特別な焦点を当てて[mcve]を見つけてみてください。それはあなたが期待どおりに動作しないステップを見つけ出すことを必要とします(あなたが期待するものと何を得るか)。 – MSeifert

答えて

0

あなたはそこにすべてのあなたのfloatコール(math.sqrtは常にfloatを返します!)、あなたは確かにあなたが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]) 

をしかし、 numpyでは配列がどのようなdtypeであるか注意する必要があります。整数配列を使用している場合、numpyは配列のdtypeに保存する配列を変換します。 (例えば1.1 - > 1)