NumPyのarangeとlinspaceで等間隔の値を生成する

この記事は、for文などで使う等間隔の数値を生み出す方法を説明します。

numpy.arangeは間隔指定、numpy.linspaceは要素数指定で等間隔の数値を生成します。

for i in np.arange(start=0, stop=6, step=2):
    print(i)

# 0
# 2
# 4
# arangeは間隔指定。

for i in np.linspace(start=0, stop=6, num=2):
    print(i)

# 0.0
# 6.0
# linspaceは要素数指定。

組み込み関数のrange関数はこちらの記事をご覧ください。

Pythonのrange関数で等間隔の値を生成する Pythonのrange関数で等間隔の値を生成する

numpy.arange

arangeの基本的な使い方です。
間隔指定のキーワードはstepです。

a = np.arange(start=1, stop=6, step=2)
print(a)
print(type(a))

# [1 3 5]
# <class 'numpy.ndarray'>
# 戻り値はndarray型。

a = np.arange(1, 6, 2)
print(a)

# [1 3 5]
# キーワード引数のキーワードは削除可能。

a = np.arange(start=1.2, stop=2.2, step=0.3)
print(a)

# [1.2 1.5 1.8 2.1]
# 少数も可能。

マイナス値を設定できます。

a = np.arange(start=10, stop=0, step=-2)
print(a)

# [10  8  6  4  2]

a = np.arange(start=-2, stop=-10, step=-2)
print(a)

# [-2 -4 -6 -8]

a = np.arange(start=1, stop=0, step=-0.2)
print(a)

# [1.  0.8 0.6 0.4 0.2]

引数stopは、出力される等間隔の数値の区間に含まれません。

a = np.arange(0, 6, 2)
print(a)

# [0 2 4]
# stopの値は区間に含まれない。

a = np.arange(0, 6+1, 2)
print(a)

# [0 2 4 6]
# stopの値を含みたい場合は、stopにstep以下の値を加算する。

必須引数はstopのみです。
引数ひとつの場合はstopの設定と認識されます。

引数を省略してコードを書きたい方は、引数の位置を認識すれば期待通り書けます。

a = np.arange(3)
print(a)

# [0 1 2]
# 引数はstopのみが必須で、デフォルトはstartは0、stepは1。
# 引数ひとつだとstart=0 stop=3 step=1となる。

a = np.arange(3, 6)
print(a)

# [3 4 5]
# 引数2つだと、位置引数でstart=3 stop=6 step=1となる。

numpy.arangeの仕様書です。

numpy.linspace

linspaceの基本的な使い方です。
要素数指定のキーワードはnumです。

l = np.linspace(start=0, stop=4, num=3)
print(l)
print(type(l))

# [0. 2. 4.]
# <class 'numpy.ndarray'>
# 戻り値はndarray型。

l = np.linspace(0, 4, 3)
print(l)

# [0. 2. 4.]
# キーワード引数のキーワードは削除可能。

l = np.linspace(start=0, stop=1.5, num=3)
print(l)

# [0.   0.75 1.5 ]
# numはint型。startとstopは少数が可能。

引数stopを出力される等間隔の数値の区間に含むか含まないかを決定するのは、引数endpointです。
endpointのデフォルトはTrueで、stopの値は出力される等間隔の数値の区間に含まれます。

l = np.linspace(0, 4, num=3, endpoint=False)
print(l)

# [0.         1.33333333 2.66666667]
# stopを区間に含むかは、endpointで指定する。
# endpointのデフォルトはTrue。

l = np.linspace(0, 4, num=3, endpoint=True)
print(l)

# [0. 2. 4.]

あと、linespaceではなく、linspaceです。スペルミスにご注意ください。

numpy.linspaceの仕様書です。