ユーニックス総合研究所

  • home
  • archives
  • python-numpy-arange

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の値は0stop10に、5 ~ 10の数列を生成したい場合startの値は5stop10になります。
このstartを省略した場合、開始点は常に0になります。

stop(第1または第2引数)

生成する数列の停止点を指定します。
先ほどの例だと0 ~ 10の数列を生成したい場合はstartの値は0stop10に、5 ~ 10の数列を生成したい場合startの値は5stop10になります。
この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にはintfloatの他、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の数列を生成する

実数の数列を生成したい場合はstartstop, または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()と同様にstartstopより大きくして、stepに負数を指定すると逆順の数列を生成できます。

import numpy as np  

arr = np.arange(10, 0, -2)  # 10 ~ 0の数列(配列)を生成  
print(arr)  # 生成した配列の内容を出力  
[10  8  6  4  2]  

問題

Q1: numpy.arange()で開始点を指定したい場合、適当な引数を答えよ

  1. stop
  2. start
  3. step

Q2: numpy.arange()0.5刻みの数列を生成したい。適当な操作を答えよ

  1. startに0.5を指定する
  2. stopに0.5を指定する
  3. stepに0.5を指定する

Q3: numpy.arange()の返り値として適当なものを答えよ

  1. list
  2. tuple
  3. numpy.ndarray

問題の正解はこちら↓

Q1: 2
Q2: 3
Q3: 3