numpyには、配列ndarrayを生成するための様々な関数があります。
連続する数列を生成する関数arange()を紹介します。
配列ndarrayの基本はこちらをチェック!
arrangeの使い方
arangeでは引数で、
- 数列の始点
start - 数列の終点
stop - 数値の間隔
step
を指定して、連続した数値配列を作成することができます。
startやstepは省略することもできます。
指定しなかった場合のデフォルト値も覚えておきましょう
startのデフォルト = 0stepのデフォルト = 1
以下では、基本的なarange使用方法をサンプルコードつきで解説します。
arange(stop) ⇒ 0からstopまでの連番
引数を1つだけ指定すると、0からstop-1まで1ずつ増加する数列を作成します。
stop自身は含まれない点に注意してください。
x = np.arange(5)
# x → array([0, 1, 2, 3, 4])
arange(start, stop) ⇒ startからstop-1までの連番
引数を2つ指定すると、startからstop-1まで1ずつ増加する数列を作成します。
この場合もstop自身は含まれない点に注意してください。
y = np.arange(5, 10)
# y → array([5, 6, 7, 8, 9])
arange(start, stop, step) ⇒ 数値の間隔をstepで指定
引数を3つ指定すると、startからstop-stepまでstepずつ増加する数列を作成します。
この場合もstop自身は含まれない点に注意してください。
z = np.arange(10, 20, 3)
# z → array([10, 13, 16, 19])
startが0の場合は、startを省略して、stepをキーワード引数で指定することも可能です。
x = np.arange(10, step=2)
# x → array([0, 2, 4, 6, 8])
stopがstart以下の場合の挙動
何らかの理由でstepよりも小さい値をstopに指定すると空の配列が返されます。
x = np.arange(start=10, stop=9)
# array([], dtype=int32)
startやstopに直接数字を指定するのではなく、変数で指定している場合に、こういう状況に出くわすことがあるかもしれませんね。
arange()とlinspace()の違い
arange()と類似した関数にlinspace()関数があります。
どちらも等間隔の数列を生成しますが、それぞれ次の特徴があります。
arange():数列の間隔を指定linspace():数列の要素数を指定
例えば
0から100までの数字を10ずつ増やしたいと思った場合はarange()10個に区切りたいと思った場合はlinspace()
を使うと便利です。
x = np.arange(0, 100, 25)
# x → array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
y = np.linspace(0, 100, 10)
# y → array([ 0. , 11.11111111, 22.22222222, 33.33333333,
# 44.44444444, 55.55555556, 66.66666667, 77.77777778,
# 88.88888889, 100. ])
また最小限の引数を渡した(stopだけを指定した)場合の挙動が特徴的です。
arange(stop):0からstopまで1ずつ増加する整数列linspacec(stop):0からstopまでを50分割した数列(整数とは限らない)
そのため、手軽に数列を作るときには
- 整数列を作りたいときは
arange() - グラフ作成で区間を細かく区切りたいときは
linspace()
が便利な印象です。
x = np.arange(0, 50)
# x → array([ 0, 1, 2, 3,..., 49]) #1ずつ増える整数列を作る
y = np.linspace(0, 10)
# y → array([ 0. , 0.20408163, 0.40816327,..., 10.]) #50要素にとにかく分割する
おわりに
arangeを使いこなせるようになったら、あわせてlinspaceも覚えたいですね!
他にもnumpyの記事を書いていますのでぜひ見てみてください!


