Pythonを使って0.1ごとにfor文を回す
python numpy
Lastmod: 2023-10-09

はじめに

for文を使って小数点を繰り返したい時ってたまにありますよね。今回はそれを実現する方法を書いていきます。0~1を0.1刻みで繰り返す想定です。

rangeを使う方法

rangeを使ってまず0~10の整数を発生させて、10で割る作業。

for i in range(0, 10, 1):
    print(i/10)
    
'''出力
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
'''

numpyを使う方法

まずnp.arangeで小数点の繰り返しを発生させて、桁数で丸め込める作業。

import numpy as np

data = np.arange(0.0, 1.0, 0.1)
data = np.round(data, 1)

for i in data:
    print(i)

'''出力
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
'''

失敗例

range

rangeでそのまま小数点指定すればいんじゃねー?

for i in range(0, 1, 0.1):
    print(i)
    
'''出力
Traceback (most recent call last):
  File "false.py", line 1, in <module>
    for i in range(0, 1, 0.1):
TypeError: 'float' object cannot be interpreted as an integer
'''

「小数点で指定するな、整数で指定しろ。」

すいません。。。

np.arange

np.arangeで小数点作ればそれだけでいんじゃねー?

import numpy as np

data = np.arange(0.0, 1.0, 0.1)

for i in data:
    print(i)

'''出力
0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9
'''

なんかうまくいかない。。。しゃーなし丸めこむか。。。