
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
関数では、サンプル数で配列のサイズを指定できるという点に違いがあります。
等差数列を生成する際は、適宜使い分けましょう。
以上。