科学の箱

科学・IT・登山の話題

Python

numpy.linspace()を使って等差数列を生成する

投稿日:

一次関数と等差数列

一次関数をテストするときに必須になるのが等差数列。等差数列とは要素と要素の間の差が等しいもの。

例えば1, 2, 3, 4, 5, 6は等差が1の数列である。等差が2になると、1, 3, 5, 7, 9, 11となる。

numpy.linspace()

等差数列を作るためにはnumpy.linspace()を使えばよい。

numpy.linspace()のマニュアルはこちらに記載されている : numpy.linspace()

numpy.linspace()の基本的な使い方

パラメータのstartには等差数列を開始する値、endには等差数列を終了する値を指定する。numには生成する要素の数を指定する。これはデフォルトでは50となっている。

とりあえずstart, endのみ指定して等差数列を作ってみる。

print(np.linspace(0,49))
# [ 0.  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. 31. 32. 33. 34. 35.
 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.]

 

次にnumを指定して生成する要素の数を変えてみる。

print(np.linspace(0,99, num=100))
# [ 0.  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. 31. 32. 33. 34. 35.
 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.
 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89.
 90. 91. 92. 93. 94. 95. 96. 97. 98. 99.]

 endpointを指定して求めたい等差数列を作る

numpy.linspace()は等差数列を作るのに便利な関数であるが、実際にほしい等差数列を作るためにはちょっとしたコツがある。開発をしているときにイメージする等差数列は開始点、終了点、等差が決まっている数列である。例えば開始点が0、終了点が100、等差2としてみる。これを作成するために開始点0, 終了点100、num=50を指定してみる。

numが50なのは、(100-0)/2から計算してみる。

print(np.linspace(0,100, num=50))
# [  0.           2.04081633   4.08163265   6.12244898   8.16326531
  10.20408163  12.24489796  14.28571429  16.32653061  18.36734694
  20.40816327  22.44897959  24.48979592  26.53061224  28.57142857
  30.6122449   32.65306122  34.69387755  36.73469388  38.7755102
  40.81632653  42.85714286  44.89795918  46.93877551  48.97959184
  51.02040816  53.06122449  55.10204082  57.14285714  59.18367347
  61.2244898   63.26530612  65.30612245  67.34693878  69.3877551
  71.42857143  73.46938776  75.51020408  77.55102041  79.59183673
  81.63265306  83.67346939  85.71428571  87.75510204  89.79591837
  91.83673469  93.87755102  95.91836735  97.95918367 100.        ]

上記のように要素の値が少しずれた配列が生成される。これは等差が2である場合には実際に生成される要素は51になるためである。よって以下のようにする。

print(np.linspace(0,100, num=51))
#[  0.   2.   4.   6.   8.  10.  12.  14.  16.  18.  20.  22.  24.  26.
  28.  30.  32.  34.  36.  38.  40.  42.  44.  46.  48.  50.  52.  54.
  56.  58.  60.  62.  64.  66.  68.  70.  72.  74.  76.  78.  80.  82.
  84.  86.  88.  90.  92.  94.  96.  98. 100.]

 

このようなときに直感的にわかりやすいのが、endpoint=Falseである。endpoint=Falseを指定すると等差=(終了点-開始点)/numとなる。

 

print(np.linspace(0,100, num=50, endpoint=False))
# [ 0.  2.  4.  6.  8. 10. 12. 14. 16. 18. 20. 22. 24. 26. 28. 30. 32. 34.
 36. 38. 40. 42. 44. 46. 48. 50. 52. 54. 56. 58. 60. 62. 64. 66. 68. 70.
 72. 74. 76. 78. 80. 82. 84. 86. 88. 90. 92. 94. 96. 98.]

 

公差を表示する – retstep

retstepはデフォルトではFalseである。これによりnumpy.linspace()の戻り値は生成された数列のみである。retstep=Trueにすることで公差も表示できる。

print(np.linspace(0,100, num=11,retstep=True))
# (array([  0.,  10.,  20.,  30.,  40.,  50.,  60.,  70.,  80.,  90., 100.]), 10.0)

 

 

 

メタ情報

inarticle



メタ情報

inarticle



-Python
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Anaconda Jupyterで自動補完を使う手順

まずはnbexensionsをインストール。これは拡張モジュールを管理する機能。 conda install -y -c conda-forge jupyter_contrib_nbextension …

no image

numpyで三角関数の数値計算をしてみる

numpyで三角関数の数値計算をしてみる。 ここでは以下を説明する。 三角関数 逆三角関数 角度とラジアンの変換 三角関数 numpyでサイン、コサイン、タンジェントの計算をするためにはnumpy.s …

no image

pythonからgoogle translateを使う

まずはパッケージをpip経由でインストール pip install googletrans これで完了。あとは利用するだけです。 日本語を英語に翻訳するとき。 translator = Transla …

no image

pythonで仮想環境を利用する

conda create –name fluffy numpy conda activate fluffy conda info –env actiavte fluffy de …

no image

pythonでjanomeを使う

PythonでMecabを利用して形態要素解析に挑戦したところMecabが原因不明のエラーを引き起こしいったん断念。 代わりにJanomeを導入してみた。 Janomeは下記からインストーラを取得する …

2019年9月
« 8月   10月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

side bar top



最近の投稿

アーカイブ

カテゴリー