range() に小数点以下の値を使用するにはどうすればいいですか? 質問する

range() に小数点以下の値を使用するにはどうすればいいですか? 質問する

0 と 1 の間を 0.1 ずつ反復するにはどうすればよいですか?

これは、ステップ引数がゼロになることはできないことを示しています。

for i in range(0, 1, 0.1):
    print(i)

ベストアンサー1

小数点ステップを直接使用するよりも、必要なポイント数で表現する方がはるかに安全です。そうしないと、浮動小数点の丸め誤差によって間違った結果が生じる可能性があります。

使用linspace機能からナンピライブラリ (標準ライブラリの一部ではありませんが、比較的簡単に入手できます)。linspace返すポイントの数を受け取り、適切なエンドポイントを含めるかどうかを指定することもできます。

>>> np.linspace(0,1,11)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])
>>> np.linspace(0,1,10,endpoint=False)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

浮動小数点ステップ値を実際に使用したい場合は、次を使用しますnumpy.arange

>>> import numpy as np
>>> np.arange(0.0, 1.0, 0.1)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

ただし、浮動小数点の丸め誤差によって問題が発生します。以下は、丸め誤差arangeによって、3 つの数値しか生成されないはずの配列が長さ 4 で生成される単純なケースです。

>>> numpy.arange(1, 1.3, 0.1)
array([1. , 1.1, 1.2, 1.3])

おすすめ記事