科学の箱

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

kaggle Titanic Tutorial – 8

前回の結果がいまいちだった。これまではAgeは平均値でNullを埋めていた。平均値では明らか実際のデータと差異が出ると考えられる。そのためAgeがない情報についてより正確なAgeで補完するようにした。 …

no image

pandaでdataframeを利用するときの基本操作

Dataframeを作成します。 import numpy as np import pandas as pd from numpy.random import randn np.random.see …

no image

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

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

no image

python coding styleのツール

Pythonで使えるコーディングツール pep8 flake8 pylint   Related posts:automated the boring – day6初めてのmatplotli …

no image

配列の属性を確認

numpyでは生成した配列の中身を確認するための属性が用意されている。 主な属性は以下の通り 次元数を確認:ndarray.ndim 各次元の大きさを確認:ndarray.shape 全部の要素数:n …

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

side bar top



アーカイブ

カテゴリー