numpy
には、配列ndarray
を生成するための様々な関数があります。
連続する数列を生成する関数arange()
を紹介します。
配列ndarray
の基本はこちらをチェック!
arrangeの使い方
arange
では引数で、
- 数列の始点
start
- 数列の終点
stop
- 数値の間隔
step
を指定して、連続した数値配列を作成することができます。
start
やstep
は省略することもできます。
指定しなかった場合のデフォルト値も覚えておきましょう
startのデフォルト = 0
stepのデフォルト = 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の記事を書いていますのでぜひ見てみてください!