Numpyのarangeの使い方: 指定範囲の数列を生成する
- 作成日: 2020-10-14
- 更新日: 2023-12-24
- カテゴリ: Python
NumPyのarangeの使い方
Pythonには配列を便利に演算できるライブラリNumPyがあります。
NumPyは指定したパラメーターで様々な数列を生成する、組み込み関数のrange()
に似た関数arange()
を持っています。
この関数を使うことで、自分のイメージする様々な数列の配列を生成できるようになります。
numpy.arange()
は例えば↓のように使います。
import numpy as np
arr = np.arange(3, 6) # 3 ~ 6の範囲の数列を生成
print(arr)
[3 4 5]
numpy.arange()の構造
numpy.arange()
は↓のような構造を持っています。
numpy.arange()
は最大で4つの引数を取り、1つの返り値を返します。
基本的な使い方は組み込み関数のrange()
と同じですが、numpy.arange()
では生成する値の型も指定できます。
numpy.arange([start, ]stop, [step, ]dtype=None)
呼び出し例は↓の通りです。
np.arange(10)
np.arange(5, 10)
np.arange(5, 10, 2)
np.arange(5, 10, 2, np.float32)
start(第1引数、オプショナル)
生成する数列の開始点を指定します。
たとえば0 ~ 10
の数列を生成したい場合はstart
の値は0
でstop
が10
に、5 ~ 10
の数列を生成したい場合start
の値は5
でstop
が10
になります。
このstart
を省略した場合、開始点は常に0
になります。
stop(第1または第2引数)
生成する数列の停止点を指定します。
先ほどの例だと0 ~ 10
の数列を生成したい場合はstart
の値は0
でstop
が10
に、5 ~ 10
の数列を生成したい場合start
の値は5
でstop
が10
になります。
このstop
は省略できません。
また、第1引数のstart
を省略した場合、このstop
が第1引数として扱われます。
step(第3引数、オプショナル)
数列の要素同士の幅を指定します。
幅と言うのは、たとえば0 ~ 10
の数列があった場合、step
数を2
にすると0, 2, 4, 6, 8
という数列になります。
このstep
を省略した場合、step
の値は常に1
になります。
このstep
を指定したい場合は、同時にstart
も指定する必要があります。
dtype(第4引数、オプショナル)
数列内の要素の型を指定します。
これは、返り値の配列の要素の型です。
このdtype
を省略した場合、numpy.arange()
は他の引数の型から推測して型を決定します。
つまり、第1引数のstart
や第2引数のstop
が実数であれば、numpy.arange()
はnumpy.float64
などの実数を表す型で数列の値を生成します。
dtype
にはint
やfloat
の他、NumPyの持つ型(numpy.dtype
)を指定することが可能です。
返り値
numpy.arange()
の返り値はNumPyの配列(numpy.ndarray
)です。
この配列には生成済みの数列が要素として格納されています。
import numpy as np
arr = np.arange(3) # 0 ~ 3の数列を生成
print(type(arr)) # 返り値のタイプを出力
print(arr) # 返り値の内容を出力
<class 'numpy.ndarray'>
[0 1 2]
引数のパラメーターから数列を生成できない場合はnumpy.arange()
は空の配列(numpy.ndarray
)を返します。
import numpy as np
arr = np.arange(2, 2)
print(arr)
[]
停止点を指定して数列を生成する
numpy.arange()
の第1引数(stop
)に整数3
を指定し、0 ~ 3
の範囲の数列を生成します。
import numpy as np
arr = np.arange(3) # 0 ~ 3の数列(配列)を生成
print(arr) # 生成した配列の内容を出力
[0 1 2]
開始点と停止点を指定して数列を生成する
numpy.arange()
の第1引数(start
)に整数3
を指定し、第2引数(stop
)に整数6
を指定し、3 ~ 6
の範囲の数列を生成します。
import numpy as np
arr = np.arange(3, 6) # 3 ~ 6の数列(配列)を生成
print(arr) # 生成した配列の内容を出力
[3 4 5]
2刻みの数列を生成する
numpy.arange()
の第3引数(step
)に数列の要素同士の幅である整数2
を指定し、0 ~ 10
の範囲の2
刻みの数列を生成します。
import numpy as np
arr = np.arange(0, 10, 2) # 0 ~ 10の数列(配列)を生成
print(arr) # 生成した配列の内容を出力
[0 2 4 6 8]
floatの数列を生成する
実数の数列を生成したい場合はstart
かstop
, またはstep
の引数に実数を指定します。
import numpy as np
arr = np.arange(0.0, 3.0, 0.5) # 0.0 ~ 3.0の数列(配列)を生成
print(arr) # 生成した配列の内容を出力
print(type(arr[0])) # 要素のタイプを出力
[0. 0.5 1. 1.5 2. 2.5]
<class 'numpy.float64'>
またはnumpy.arange()
の第4引数のdtype
に明示的に生成する要素の型を指定します。
↓の例ではnp.float32
を指定しています。
import numpy as np
arr = np.arange(0, 3, 1, np.float32) # 0.0 ~ 3.0の数列(配列)を生成
print(arr) # 生成した配列の内容を出力
print(type(arr[0])) # 要素のタイプを出力
[0. 1. 2.]
<class 'numpy.float32'>
逆順の数列を生成する
組み込み関数のrange()
と同様にstart
をstop
より大きくして、step
に負数を指定すると逆順の数列を生成できます。
import numpy as np
arr = np.arange(10, 0, -2) # 10 ~ 0の数列(配列)を生成
print(arr) # 生成した配列の内容を出力
[10 8 6 4 2]
問題
Q1: numpy.arange()
で開始点を指定したい場合、適当な引数を答えよ
- stop
- start
- step
Q2: numpy.arange()
で0.5
刻みの数列を生成したい。適当な操作を答えよ
- startに0.5を指定する
- stopに0.5を指定する
- stepに0.5を指定する
Q3: numpy.arange()
の返り値として適当なものを答えよ
- list
- tuple
- numpy.ndarray
問題の正解はこちら↓
Q1: 2
Q2: 3
Q3: 3