Pythonで等差数列を作る方法はいくつか存在します。
等差数列とは、隣り合う値同士の差が同じ数列のことを言います。
標準ライブラリで作る場合は range関数を使用する方法がありますが、その他にも Pythonの拡張モジュールである NumPyをインポートして、 arange関数 もしくは linspace関数を使用する方法もあります。
今回の記事では、数ある作成方法の中から、linspace関数を使用して等差数列を作る方法について解説していきたいと思います。
NumPyで等差数列を作る方法は?
一方、linspace関数の数列の作成方法は上記の2つとは少々異なり、開始値から終了値までの範囲を指定の要素数で分割した数列を作成します。
詳しい使い方などについては後ほど解説しますが、それぞれの作成結果の違いを以下の簡単な例で見比べてみましょう。
【実装例】
import numpy as np
print(np.arange(1, 20, 5))
print(np.linspace(1, 20, 5))
【実行結果】
[ 1 6 11 16]
[ 1. 5.75 10.5 15.25 20. ]
このように、同じ引数の値で数列を作成しても、関数の結果には違いが生じます。
np.linspaceの使い方
それでは早速、linspace関数の使用方法について詳しく見ていきましょう。
基本的な使い方から応用方法まで、順に解説していきます。
引数と返り値
linspace関数では、以下の引数を指定することができます。
np.linspace(start, stop, num, endpoint, retstep, dtype)
それぞれの引数の詳細についてまとめました。
引数
【start】(必須)
開始時の数値を指定します。マイナス値や小数も指定可能です。
【stop】(必須)
終了時の数値を指定します。startと同様に、マイナス値や小数も指定可能です。
【num】
要素数を指定します。指定がない場合のデフォルト値は50です。
【endpoint】
stopの値を要素に含むか否かを bool値で指定します。
指定がない場合のデフォルト値はTrueです。
【retstep】
関数の返り値に stepを含めるか否かを bool値で指定します。
Trueの場合は、作成した数列と stepを含むタプルが結果として返却されます。
指定がない場合のデフォルト値はFalseです。
【dtype】
返却する配列の型を指定します。
返り値
返り値は以下の1つ、もしくは2つが返却されます。
【samples】
等差数列を格納した配列です。
【step】
要素同士の値の差を表した数値です。 retstepが True の場合にのみ返却されます。
基本的な使い方
Numpyは拡張モジュールのため、コードを記述する前に実行端末にインストールしておく必要があります。
まだの場合は、以下のコマンドでインストール可能です。
pip install numpy
インストールが完了したら、Numpyをインポートして関数を実行しましょう。
最も簡単な使い方は、開始値と終了値のみを指定するやり方です。
【サンプルコード】
import numpy as np
print(np.linspace(1, 100))
【実行結果】
[ 1. 3.02040816 5.04081633 7.06122449 9.08163265
11.10204082 13.12244898 15.14285714 17.16326531 19.18367347
21.20408163 23.2244898 25.24489796 27.26530612 29.28571429
31.30612245 33.32653061 35.34693878 37.36734694 39.3877551
41.40816327 43.42857143 45.44897959 47.46938776 49.48979592
51.51020408 53.53061224 55.55102041 57.57142857 59.59183673
61.6122449 63.63265306 65.65306122 67.67346939 69.69387755
71.71428571 73.73469388 75.75510204 77.7755102 79.79591837
81.81632653 83.83673469 85.85714286 87.87755102 89.89795918
91.91836735 93.93877551 95.95918367 97.97959184 100. ]
要素数のデフォルト値は 50なので、指定した範囲を 50個の要素で等間隔に分割した数列が作成されます。
第三引数で要素数を変える
第3引数の num に値を渡すことで、配列内の要素数を指定することができます。
【サンプルコード】
import numpy as np
print(np.linspace(1, 100, 30))
【実行結果】
[ 1. 4.4137931 7.82758621 11.24137931 14.65517241
18.06896552 21.48275862 24.89655172 28.31034483 31.72413793
35.13793103 38.55172414 41.96551724 45.37931034 48.79310345
52.20689655 55.62068966 59.03448276 62.44827586 65.86206897
69.27586207 72.68965517 76.10344828 79.51724138 82.93103448
86.34482759 89.75862069 93.17241379 96.5862069 100. ]
endpointで[start, end]になる数列を作る
引数の endpoint を使用することで、終了値を要素の値に含めるか否かを指定することができます。
関数の仕様上、指定範囲や分割する要素数によっては True でも値に含まれないケースもありますが、Falseを指定した場合は必ず除外することができます。
【サンプルコード】
import numpy as np
print("Trueの場合")
print(np.linspace(1, 30, 30, endpoint = True))
print("\nFalseeの場合")
print(np.linspace(1, 30, 30, endpoint = False))
【実行結果】
Trueの場合
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.]
Falseeの場合
[ 1. 1.96666667 2.93333333 3.9 4.86666667 5.83333333
6.8 7.76666667 8.73333333 9.7 10.66666667 11.63333333
12.6 13.56666667 14.53333333 15.5 16.46666667 17.43333333
18.4 19.36666667 20.33333333 21.3 22.26666667 23.23333333
24.2 25.16666667 26.13333333 27.1 28.06666667 29.03333333]
状況に応じて使い分けするといいでしょう。
retstepで数列のstepの幅を取得する
引数の retstepに Trueを指定した場合、作成した数列のステップ幅を返り値として取得することができます。
【サンプルコード】
import numpy as np
print(np.linspace(1, 100, 30, retstep = True))
【実行結果】
(array([ 1. , 4.4137931 , 7.82758621, 11.24137931,
14.65517241, 18.06896552, 21.48275862, 24.89655172,
28.31034483, 31.72413793, 35.13793103, 38.55172414,
41.96551724, 45.37931034, 48.79310345, 52.20689655,
55.62068966, 59.03448276, 62.44827586, 65.86206897,
69.27586207, 72.68965517, 76.10344828, 79.51724138,
82.93103448, 86.34482759, 89.75862069, 93.17241379,
96.5862069 , 100. ]), 3.413793103448276)
指定無し、もしくは Falseの場合には配列がそのまま返却されますが、Trueを指定した場合は要素に配列とステップ幅を含むタプルを返却します。
それぞれの要素にアクセスしたい場合は、返却されたタプルを対象にインデックス番号を指定して取り出しましょう。
【サンプルコード】
import numpy as np
step = np.linspace(1, 100, 30, retstep = True)
print(step[1])
【実行結果】
3.413793103448276
まとめ
いかがでしたか?今回は、linspace関数の使い方について解説をしました。
NumPyに関しては、今回紹介した関数の他にも様々な数値計算用の関数が用意されています。
非常に便利な機能ですので、この機会にぜひ活用してみてください。
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

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