NumPyの「arange」の使い方 – 連番や等差数列の配列を生成する

NumPyはPython数値計算を行うためのライブラリです。NumPyのarange関数は、連番や等差数列を要素とするndarray配列を生成します。この記事では、arangeの基本的な使い方、主要な引数、そして具体的な使用例について解説します。

arangeの基本的な使い方

arangeは、引数で指定された範囲と間隔に基づいて、等間隔の数値を生成します。

最もシンプルな例

import numpy as np

# 0から4までの整数列を生成
arr = np.arange(5)
print(arr)

このコードでは、0から始まり5未満の整数列を生成し、NumPy配列としてarr変数に格納しています。arangeはデフォルトで0から始まり、1ずつ増加する整数を生成します。

出力

[0 1 2 3 4]

arangeの主要な引数

arangeは以下の引数を取ります。

引数 説明
start 数列の開始値を指定します。省略した場合は0になります。 np.arange(2, 10) # 2から始まる
stop 数列の終了値を指定します。この値は数列に含まれません。 np.arange(5) # 5は含まれない
step 数値の間隔を指定します。省略した場合は1になります。 np.arange(0, 10, 2) # 2ずつ増加
dtype 生成される配列のデータ型を指定します。省略した場合は、他の引数から型推論されます。整数、浮動小数点数複素数など、様々なデータ型を指定可能です。 np.arange(5, dtype=float) # float型の配列を生成

始値、終了値、間隔の指定

# 2から始まり、10未満まで、2ずつ増加する数列
arr = np.arange(2, 10, 2)
print(arr)

出力

[2 4 6 8]

浮動小数点数の数列

stepに小数を指定すると、浮動小数点数の数列を生成できます。

# 0から始まり、1未満まで、0.1ずつ増加する数列
arr = np.arange(0, 1, 0.1)
print(arr)

出力

[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

データ型の指定

dtypeでデータ型を指定できます。

arr = np.arange(5, dtype=float)
print(arr)

出力

[0. 1. 2. 3. 4.]

arange使用時の注意点

浮動小数点数の誤差

step浮動小数点数を指定した場合、丸め誤差により、要素数が予想と異なる場合があります。

arr = np.arange(0, 1, 0.1)
print(len(arr))  # 10になることを期待
print(arr)

環境にもよりますが出力は次のようになります。

10
[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

10が出力されることもあれば、丸め誤差によって、9が出力されることもあります。

arr = np.arange(0, 5, 0.5)
print(len(arr)) # 10になることを期待
print(arr)

出力(例)

9
[0.  0.5 1.  1.5 2.  2.5 3.  3.5 4. ]

浮動小数点数の等差数列を扱う場合は、linspaceの使用も検討してください。

stopの値は含まれない

arangeで生成される数列には、stopで指定した値は含まれません。

arr = np.arange(1, 5)
print(arr)

出力

[1 2 3 4]

linspaceとの比較

linspaceも等間隔の数列を生成する関数ですが、arangeとは引数の指定方法が異なります。

  • arange: 生成する数列の間隔を指定
  • linspace: 生成する数列の素数を指定
# 0から1までを5等分した数列を生成
arr = np.linspace(0, 1, 5)
print(arr)

出力

[0.   0.25 0.5  0.75 1.  ]

linspaceでは最後の値(この場合は1)が含まれます。

まとめ

NumPyのarangeは、連番や等差数列を生成するための関数です。start, stop, step引数を使うことで、柔軟に数列を生成できます。 浮動小数点数の数列を扱う場合は、丸め誤差に注意が必要です。要素数を指定して等間隔の数列を生成したい場合は、linspaceを使用を検討してください。

pydocument.hatenablog.com