Pythonで等差数列を生成する場合、実装方法の一つとして拡張モジュールである NumPyを使用する方法があります。
NumPyには、数列を生成できる関数として arange関数と linspace関数の二つが用意されています。
今回の記事では、この2つの中から arange関数を使用して等差数列を作る方法について解説していきたいと思います。
arange関数とは?
arange関数はNumPyに搭載されている機能のうちの1つで、連番や等差数列を生成することができる関数です。
Pythonの標準ライブラリで使用できる range 関数と仕様がほとんど似ているため、基本的には range 関数と同じように使用できます。
arange関数とlinspace関数の違いは?
冒頭でも述べたように、NumPyを使って数列を生成する方法の一つとして、arange関数の他に linspace関数が存在します。
指定した範囲内の数値で数列を作成する点はどちらも同じですが、arange関数は値同士の間隔(公差)を、linspace関数は作成する数列の要素数を任意に指定できるという違いがあります。
上述の通り、arange関数の機能は基本的に range関数と同じです。
開始値から終了値-1までの範囲の中から、指定した間隔ごとに順に数値を並べた数列を作成します。
一方、linspace関数の場合は上記とは少々異なり、開始値から終了値までの範囲を指定の要素数で分割した数列を作成します。
それぞれの違いを、以下の例で見比べてみましょう。
【サンプルコード】
import numpy as np
print(np.arange(1, 10, 2))
print(np.linspace(1, 10, 2))
【実行結果】
[1 3 5 7 9]
[ 1. 10.]
引数で指定できる内容に違いがあるため、同じ値を渡してもこのように結果に違いが生じます。
arange関数の使い方
ここからは、arange関数の具体的な使い方について解説していきます。
arange関数の基本構文
まずは、基本構文から見ていきましょう。
arange関数を使用する際は、以下のように記述します。
【基本構文】
numpy.arange([start], stop, [step], [dtype])
指定できる引数は上記の4つです。
stop以外の引数は省略可能となっています。
start は開始値で、指定した値を一つ目の要素に含んだ数列が作成されます。
反対に stop は終了値となりますが、こちらは要素に含まれないため、開始値〜終了値−1が実際に要素の値として使用され得る範囲となります。
startを省略した場合のデフォルト値は 0 となっています。
【サンプルコード】
import numpy as np
print(np.arange(10))
print(np.arange(5, 10))
【実行結果】
[0 1 2 3 4 5 6 7 8 9]
[5 6 7 8 9]
start と stop には、負の値を指定することも可能です。
【サンプルコード】
import numpy as np
print(np.arange(-10, -1))
【実行結果】
[-10 -9 -8 -7 -6 -5 -4 -3 -2]
ただし、負の値を指定する場合は必ず start も指定するようにしましょう。
stop のみを指定すると、空の配列が生成されてしまいます。
【サンプルコード】
import numpy as np
print(np.arange(-10))
【実行結果】
[]
dtypeでは、配列内の要素のデータ型を指定することができます。
デフォルトでは、その他の指定内容に合わせて自動で型が決定されます。
【サンプルコード】
import numpy as np
print(np.arange(10, dtype=float))
【実行結果】
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
step幅を指定する
第3引数の step で、作成する数列の公差を指定することができます。
【サンプルコード】
import numpy as np
print(np.arange(1, 20, 3))
print(np.arange(1, 20, 5))
【実行結果】
[ 1 4 7 10 13 16 19]
[ 1 6 11 16]
引数を省略した場合のデフォルト値は 1 となっているため、連番の数列が生成されます。
降順の等差数列を作成する
start や stop と同様に、step にも負の値を指定することができます。
マイナス値を使用することで、降順の等差数列を作成することも可能です。
【サンプルコード】
import numpy as np
print(np.arange(20, 0, -2))
【実行結果】
[20 18 16 14 12 10 8 6 4 2]
降順で数列を作る場合は、引数に指定する値に注意しましょう。
通常と同じように stop の方が大きくなるよう指定してしまうと、要素が格納されず空の配列となってしまうため、意図せぬエラーを引き起こす原因にもなりかねません。
【サンプルコード】
import numpy as np
print(np.arange(5, 10, -1))
【実行結果】
[]
要素の値を降順にする際は、必ず start の値が stop よりも大きくなるよう指定しましょう。
余談ですが、通常の数列の場合は反対にstart の値が stop を上回ると同様の現象が起きてしまうため、こちらも注意が必要です。
小数を含む等差数列を作成する
range関数と大きく異なるポイントとして、arange関数では各引数の値に浮動小数点数を指定することができます。
【サンプルコード】
import numpy as np
print(np.arange(0.1, 1.5, 0.2))
【実行結果】
[0.1 0.3 0.5 0.7 0.9 1.1 1.3]
要素の型も自動でfloat型となります。
また、こちらも整数と同様に、マイナス値を指定することが可能です。
【サンプルコード】
import numpy as np
print(np.arange(0.5, -1.5, -0.2))
【実行結果】
[ 0.5 0.3 0.1 -0.1 -0.3 -0.5 -0.7 -0.9 -1.1 -1.3]
浮動小数点数を含む等差数列を生成したい場合は、arange関数を使用すると良いでしょう。
まとめ
いかがでしたか?今回は、arange関数の使い方について解説しました。
arange関数は、等差数列を簡単に生成する方法として便利な機能の一つです。
必要となる機会も多いかと思いますので、ぜひ覚えておくといいでしょう。
また、numpyには arange関数の他にも、数値を扱うための様々な機能が用意されています。
科学計算やデータ分析などの複雑な計算を行う際には必須とも言えるツールなので、今回の関数と合わせて使い慣れておくと役に立ちます。
機会があれば、ぜひ調べてみてくださいね。
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。