2017-06-28 22 views
0

私の現在のプロジェクト私は現在変換問題があります: 最初のステップでは、scipy interp1dで2つのリストを補間しています。scipy interp1d配列をPythonのfloat値に変換

f_speed = scipy.interpolate.interp1d(t, v, 'cubic') 

この後、私はこの機能で1つの特定の点を得たいと思います。この値はscipyからの配列で、値が1つしかありません。

currentSpeed = f_speed(tpoint) 
# result: array(15.1944) 

最後に、補間された関数の値で他の値を計算したいのですが、値として0しか得られません。エラーはまったくありません。

real_distance = currentSpeed * (1/15) # some calculations 
# result: 0, all results with further calculations are zero 

計算を進めるには、scipy配列から通常のfloat値に変換する必要があります。これを行う関数はありますか?

私は... [0]、または(scipyのダウンロードではない可能性)numpyのから.tolist事前にあなたの助けを

感謝をV = currentSpeedのようないくつかのことを試してみました!

答えて

2

使用しているPythonのバージョンを指定していませんが、Python 2.7を使用している場合は、演算子/は整数除算を表します。 1/15が0を生成することを意味します。この結果を何かに乗算すると、配列値へのアクセス方法に関係なく、0になります。

問題を解決するには、少なくとも1つのオペランドが浮動小数点数であることを確認してください。

result1 = 1/15 # Produces 0 
result2 = 1.0/15 # Produces 0.06666666666666667 

あなたのコードにこれを適用した場合、あなたはPythonの2を使用してい

real_distance = currentSpeed * (1.0/15) 
+0

お返事ありがとうございました。はい、私はPython 2.7を使用しています。import __future__ import divisionからうまくいけば、私はそれを試してみましょう! –

+0

働いています、ありがとうございました! –

0

を使用する必要がありますか?もしそうなら、問題は分裂です。 整数除算の結果、整数は1/15となり、結果は0となります。 代わりに1.0/15を試してください。 1.0を使用すると、明示的に浮動小数点数にすると、結果は期待どおりになります。

関連する問題