科学の箱

科学・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

automated the boring – day9

https://automatetheboringstuff.com/chapter17/ >>> from PIL import Image &gt …

no image

automated the boring – day4

本日からOS操作。面倒くさいことを自動化するのであればOSコマンドは避けては通れない。 pythonではすでにosパッケージが用意されているので、これを利用すればコードとしてはそれほどはややこしくない …

no image

K近傍法でデータを分析

K近傍法の手順 データ読み込み EDA スケーリング K選択前処理 モデル評価 K選択 モデル構築   K近傍法でデータを分析する際にはseabornのpairplotが役に立つ df = …

no image

graphvizのコマンドラインから実行

dot -Kdot -Tpng test.dot -o test.png Related posts:K近傍法でデータを分析kaggle Titanic Tutorial – 8pythonでsha3 …

no image

Pillowのインストールは成功しているのにエラーが出る

from . import _imaging as core ImportError: DLL load failed: The specified module could not be found …

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

side bar top



アーカイブ

カテゴリー