Pythonで等間隔の数字の列を作る

PythonでNumPyを使って等間隔の数字の列(数列)を作ります。

目次

  1. linspaceメソッドの使い方
  2. 数列の作成例

linspaceメソッドの使い方

import numpy as np

samples, [step] = np.linspace(start, stop, [num], [endpoint], [retstep], [dtype])

変数

内容

start

scalar

数列を開始する数値。

stop

scalar

数列を終了する数値。

num

int

省略可。既定値は50。戻る数列の数値の数。

endpoint

bool

省略可。既定値はTrue。数列にstopで指定した値を含めるか。

retstep

bool

省略可。既定値はFalse。数列のステップ値を返すかどうか。

dtype

dtype

省略可。既定値はNone。数列の数値の型。

samples

ndarray

数列。

step

float

数列のステップ値。

linspaceメソッドは、等間隔の数列の行列を作ります。

数列の作成例

いろいろオプションがあるので、試してみましょう。

一番単純な例です。0から10まで、50個の数値を持つ等間隔の数列を作ってみます。

>>> import numpy as np
>>> np.linspace(0,10)
array([ 0.        ,  0.20408163,  0.40816327,  0.6122449 ,  0.81632653,
        1.02040816,  1.2244898 ,  1.42857143,  1.63265306,  1.83673469,
        2.04081633,  2.24489796,  2.44897959,  2.65306122,  2.85714286,
        3.06122449,  3.26530612,  3.46938776,  3.67346939,  3.87755102,
        4.08163265,  4.28571429,  4.48979592,  4.69387755,  4.89795918,
        5.10204082,  5.30612245,  5.51020408,  5.71428571,  5.91836735,
        6.12244898,  6.32653061,  6.53061224,  6.73469388,  6.93877551,
        7.14285714,  7.34693878,  7.55102041,  7.75510204,  7.95918367,
        8.16326531,  8.36734694,  8.57142857,  8.7755102 ,  8.97959184,
        9.18367347,  9.3877551 ,  9.59183673,  9.79591837, 10.        ])

ちょっとわかりやすくして、数値の数を10個にしてみます。

>>> import numpy as np
>>> np.linspace(0,10,10)
array([ 0.        ,  1.11111111,  2.22222222,  3.33333333,  4.44444444,
        5.55555556,  6.66666667,  7.77777778,  8.88888889, 10.        ])

0と10の両方が数列に入っているので、間隔が10/9になってしまいました。

10を入れないようにします。

>>> import numpy as np
>>> np.linspace(0,10,10,endpoint=False)
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])

終端の10が無くなりました。

では、数値のステップ値も戻すようにしてみましょう。

>>> import numpy as np
>>> sample, step = np.linspace(0,10,10,endpoint=False,retstep=True)
>>> sample
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
>>> step
1.0

ステップは1ですね。

戻り値の型がfloatになってますので、intで戻すようにしてみましょう。

>>> import numpy as np
>>> sample, step = np.linspace(0,10,10,endpoint=False,retstep=True,dtype=int)

>>> sample
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> type(sample[0])
<class 'numpy.int64'>

>>> step
1.0
>>> type(step)
<class 'numpy.float64'>

数列の方はintになりました。

公開日

広告