numpy.arangeで連番配列や等差数列を生成する方法

NumPyで連番の配列を生成する

Pythonで連番データを生成する場合、range 関数を使用します。例えば、0から9までの連番のリストを生成する場合、以下のように書けます。

a = list(range(10))
print(a) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

同じように、ndarray として生成する場合は次のようになりますが、少し冗長な書き方になってしまっています。

import numpy as np

a = np.array(range(10))
print(a) # [0 1 2 3 4 5 6 7 8 9]

arange関数を使う

NumPyには、range関数と同じように使用できる numpy.arange 関数が用意されています。Python の range関数と同じように ndarray を生成したい場合は、arange 関数を使用しましょう。

import numpy as np

a = np.arange(10)
print(a) # [0 1 2 3 4 5 6 7 8 9]

arange関数のパラメータ

numpy.arange([start, ]stop, [step, ]dtype=None)

numpy.arange 関数は、指定された範囲内で均等な間隔を置いた配列を返します。つまり、連番の配列や等差数列を生成することが可能です。引数で指定できる値は以下の通りです。

パラメータ 説明
start 省略可能。生成される配列の最初の値を指定します。省略した場合には、0が指定されます。
end 生成される値の終点を指定します。指定された値自体は含まれません。
step 省略可能。生成される値の間隔を指定します。省略した場合には、1が指定されます。
dtype 省略可能。生成される値の型を指定します。省略した場合には、他の引数入力値から型を推定します。

引数は、開始の数値(start)と終点(stop)、データの間隔(step)、データの型(dtype)を指定できます。stop以外の引数は省略可能です。基本的な使い方はPythonのrange関数と同じです。

stop で指定した値自体は生成されるデータには含まれないことに注意しましょう。

サンプルコード

numpy.arange 関数のパラメータを指定して、いろいろな配列を生成してみます。

import numpy as np

# 0から9(※10は含まない)
a = np.arange(10)
print(a) # [0 1 2 3 4 5 6 7 8 9]

# 0から4まで
b = np.arange(0, 5)
print(b) # [0 1 2 3 4]

# 1から20までの間隔1の配列(奇数)
c = np.arange(1, 20, 2)
print(c) # [ 1 3 5 7 9 11 13 15 17 19]

# 0.0から9.0まで(float64型)
d = np.arange(10, dtype="float")
print(d) # [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

stop の値が小数で指定されている場合、生成される値に stop の値を含んでしまう場合がありますので注意が必要です。必ず含まれるようになるわけではありません。

import numpy as np

b = np.arange(0.2, 0.8, 0.1)
print(b)
# [ 0.2  0.3  0.4  0.5  0.6  0.7  0.8]
# ↑ stopで指定した0.8が含まれている

等差数列を生成する numpy.linspace

NumPyには等差数列を生成するための numpy.linspace 関数が用意されています。開始と終了の数値を指定し、その間のサンプル数で生成される配列のサイズ指定します。

numpy.arange 関数は step で要素の間隔を指定でき、numpy.linspace 関数では、サンプル数で配列のサイズを指定できるという点に違いがあります。

等差数列を生成する際は、適宜使い分けましょう。

以上。

参考URL