今回は、Numpy linspace()
関数について見ていきます。
PythonのNumPyモジュールには、配列を操作してその中の要素に対して操作を行うための様々な関数があります。
NumPy入門 linspace()
NumPyのnumpy.linspace()関数は、基本的に与えられた数値の範囲から線形数列を生成するために使用されます。
通常、numpy.arange()
関数は、数値の範囲からシーケンスを生成するために使用することができます。
numpy.arange()関数の問題は、浮動小数点型の引数が与えられると、結果の精度が損なわれることです。
したがって、numpy.linspace()関数の方が好ましいと言えます。
構文は以下の様な感じです。
numpy.linspace(start, stop, num = value, endpoint = True/False, retstep = False/True, dtype = None) |
- start`: この値は、シーケンスの開始点を示す。デフォルトでは 0 とみなされます。
-
stop
: シーケンスの終了点を示す。この値は、シーケンスの終点を示す。 -
num
: 開始点から停止点までの間に生成されるステップ数または要素数を示す。
例えば、以下の様になります。
import numpy
inp = numpy.linspace( 1 , 3 , 5 )
print ( 'Linear Sequence: ,inp)
print ( 'Length of the sequence: )
print ( len (inp))
|
結果を出力すると、以下の様になります。
Linear Sequence: [ 1. 1.5 2. 2.5 3. ]
Length of the sequence: 5 |
Numpy linspace() の retstep パラメータ。
retstep` パラメータは基本的にブーリアン値です。
True を指定すると、シーケンスを生成するために各要素の間に取られるステップの大きさを指定します。
そして、その結果、シーケンスがタプルとして得られます。
例えば、以下の様になります。
import numpy
inp = numpy.linspace( 1 , 3 , num = 5 , retstep = True )
print (inp)
print ( "Length of the sequence:" , len (inp))
|
上記のように、linspace()メソッドの引数としてretstep = Trueが渡されると、出力としてタプルが生成されます。
出力されます。
(array([ 1. , 1.5 , 2. , 2.5 , 3. ]), 0.5 )
Length of the sequence: 2
|
linspace() メソッドのエンドポイントパラメーター
endpoint` パラメータはブール値です。
Falseに設定された場合、シーケンスの最後の番号を結果に含めない。
endpointのデフォルト値はTrueです。
例えば、以下の様になります。
import numpy
inp = numpy.linspace( 1 , 3 , 5 , endpoint = False )
print ( 'Sequence from 1 to 3:' , inp)
|
結果は以下の通りです。
Sequence from 1 to 3 : [ 1. 1.4 1.8 2.2 2.6 ]
|
linspace() メソッドの軸パラメーター
axis` パラメータは、基本的に、生成された配列を格納するための軸を指定することができる。
axis パラメータは、データの始点と終点が配列型の場合のみ適用できる。
例えば、以下の様になります。
import numpy
inp1 = numpy.array([[ 10 , 20 , 30 ], [ 70 , 40 , 50 ]])
inp2 = numpy.array([[ 1 , 3 , 9 ], [ 5 , 7 , 11 ]])
op1 = numpy.linspace(inp1, inp2, 4 , axis = 0 )
print (op1)
op2 = numpy.linspace(inp1, inp2, 2 , axis = 1 )
print (op2)
|
axis = 0の場合,最初に指定された軸からシーケンスの制限値を取る.サブ配列のペア [10, 20, 30] および [1, 3, 9]
と [70, 40, 50] および [5, 7, 11]
は,inp1 から inp2 へのシーケンスを導くための限界と見なされます.
axis = 1の場合, 与えられた範囲から要素を生成するために列のシーケンスを使用します.
出力は以下の通りです。
[[[ 10. 20. 30. ]
[ 70. 40. 50. ]]
[[ 7. 14.33333333 23. ]
[ 48.33333333 29. 37. ]]
[[ 4. 8.66666667 16. ]
[ 26.66666667 18. 24. ]]
[[ 1. 3. 9. ]
[ 5. 7. 11. ]]]
[[[ 10. 20. 30. ]
[ 1. 3. 9. ]]
[[ 70. 40. 50. ]
[ 5. 7. 11. ]]]
|
Python matplotlib.pylab モジュールによるNumPy linspace()関数
NumPyのlinspace()関数は、matplotlibライブラリのpylabを使って表現することによって理解することができます。
例えば、以下の様になります。
import numpy
import pylab
inp1 = numpy.linspace( 10 , 20 , 5 , endpoint = False )
inp2 = numpy.linspace( 10 , 20 , 5 , endpoint = False )
pylab.plot(inp1, inp2, '*' )
|
結果は以下の通りです。
まとめ
今回は、numpy.linspace()メソッドの動作について理解しました。