科学の箱

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

OpenCV

WindowsにOpenCVをインストールする場合に2つのやり方がある。 一つは様々な言語からOpenCVを利用できるようにする方法、2つ目の方法ではPythonからOpenCVを利用する方法である。 …

no image

kaggle Titanic Tutorial – 11

kaggleで人気があるlightGBMをつかってみる。   インストール pip install lightgbm 特に問題がなく終了。 コード、関係するところだけ記載。 split_be …

no image

pandaの基本中の基本操作

numpyとpandaのインポート import numpy as np import pandas as pd 前準備 labels = [‘a’, ‘b’, ‘c’] mydata = [10,2 …

no image

UnionFindのfindについて処理を考える。

UnionFindにおけるfind()もしくはroot()はルート(グループの根)を見つける処理である。 記述方法としては2種類ある。 whileループを回す 再帰処理 それぞれについて動きを確認して …

no image

model.coef_の確認

重回帰分析で重みを確認するには下記を利用する。 model.coef_ ただしこれだと有効桁数が分かりにくいので有効桁数を3桁にして、さらに指数を展開する。 np.set_printoptions(p …

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

side bar top



アーカイブ

カテゴリー