2016-03-31 5 views
1

停止停止と増分が、走った:私が実際にしたいことはあるnumpyのarangeいくつかのトラブルにスタート&、私はパラメータが開始与えられ、完全なリストを作成するnumpyの欲しい

In[2]: import numpy as np 
In[3]: np.arange(2.0, 2.4, 0.2) 
Out[3]: array([ 2. , 2.2]) 

In[4]: np.arange(2.0, 2.6, 0.2) 
Out[4]: array([ 2. , 2.2, 2.4, 2.6]) 

In[5]: np.arange(2.0, 2.8, 0.2) 
Out[5]: array([ 2. , 2.2, 2.4, 2.6]) 

array([ 2. , 2.2, 2.4]) 

ここで、浮動小数点データ型が固定値にならないようにする必要があることを知りました。スタート/ストップ/インクリメントに100を掛けるほうがよいとわかっていますが、問題は、ユーザーが何個の小数を供給するかを私には伝えられないということです。私はまだフロートでそれを行うことができる方法はありますか、これを解決する良い方法がありますか?

編集: これは、最終値に0.0000001を追加する明白な解決策で動作します。しかし、これは私のコードではひどいようです...私はこれをどうにかしてうまく修正したいと思います。

答えて

2

ユーザが入力する必要がある値を指定できますか?世代のようなもののために、私はそれがendパラメータを含んでいるようlinspaceが良くなると思う

EDIT:ユーザーがstartend、およびincrementを入力した場合、インクリメントの正確な値は重要でない場合は、ちょうどnum = int((end-start)/increment+1)linspaceを使用。

EDIT2: 1e-4を適切なエラーに適合させてください(ユーザー定義変数として追加することもできます)。

eps = 1e-4*(stop-start) 
num = int((stop-start)/(incr-eps)+1) 
np.linspace(start, stop,num) 
+0

「linspace」が存在し、それを使用しようとしたことさえわかりませんでした。アイデアは素晴らしいですが、私は同じ問題に遭遇します: myList = [2.0、2.4、0.2]; num = int((myList [1] - myList [0])/ myList [2]); これは、おそらく2.4 - 2.0の結果が0.39999 – offeltoffel

+1

として処理されるため、num = 1を返します。次に、a hackを使用することができます(編集済みの記事を参照)。許容されると思われる相対誤差に '1e-4'を適合させてください。それをユーザー変数として追加することもできます。 – Silmathoron

+0

うん、これは動作します。私の付加価値が私が作成したいステップに干渉していないことを確認する良い方法。ありがとう! – offeltoffel

関連する問題