np.linspace
関数は、等差数列の配列を生成するために使う関数です。
似たような関数に、np.arange
関数がありますが、np.linspace
関数の方が、内部処理上、小数の計算の精度が高いという特徴があります。そのため、基本的には小数の等差数列の生成にはnp.linspace
関数が適しています。一方で、整数の等差数列の生成にはnp.arange
関数を使うと良いでしょう。
なお、np.arange
関数については以下のページで解説しています。
それでは、np.linspace
関数の使い方を実際のコードで見ていきましょう。
1. 書式
まずは基本的な書き方を以下にまとめておきます。
書き方:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
パラメーター:
start: 数値または数値のシーケンス(array_like) 開始数値を指定します。 |
stop: 数値または数値のシーケンス(array_like) 終了数値を指定します。ここで指定した数値は生成される配列に含まれます。ただし引数で、endpoint=False にした場合は含まれません。 |
num: 整数(オプション) 生成する配列の要素の数(長さ)を指定します。デフォルトは50です。 |
endpoint: ブール値(オプション) デフォルトのTrueでは、stopで指定した数値が生成される配列に含まれます。Falseにすると含まれません。 |
retstep: ブール値(オプション) Trueにした場合、配列とともに公差の値を返します。デフォルトはFalseです。 |
dtype: データ型(オプション) 出力する配列のデータ型を指定します。デフォルトはNoneでは、start や stop に渡した数値のデータ型から類推します。 |
axis: 整数(オプション) start と stop に数値のシーケンス(array_like)を渡した場合のみ使用可能です。等差数列を配列のどの次元軸に沿って生成するのかを指定します。 |
戻り値:
配列(ndarray): start以上 stop以下の範囲でnumで指定した要素数の等差数列の配列。endpoint=Falseの場合はstopの値は含まない。 |
公差(step) (オプション) restep=Trueにした場合のみ、配列に加えて公差の数値をfloat型で返す。 |
一緒に確認したい属性:
- arange: 連番の配列を生成
- geomspace:
- logspace:
start と stop の2つが必須引数で、それ以外はオプション引数です。
2. サンプルコード
それでは、実際のコードで確認していきましょう。
start と stop を指定
startとstopのみを指定した場合、その範囲で、要素数が50個の等差数列の配列を生成します。
# デフォルトでは要素数は50
np.linspace(1, 50)
num を指定
第三引数で、生成する配列の要素の数(配列の長さ)を指定することができます。
# 第三引数で生成する配列の要素数を指定
np.linspace(1, 50, 5)
endpoint の指定
オプション引数endpoint=False
にすると、生成する配列にstopの値が含まれなくなります。
# endpoint=False で stopの数値を含めない
np.linspace(2.0, 3.0, num=5, endpoint=False)
retstep の指定
retstep=True
にすると、配列とともに公差を戻してくれます。戻り値は、配列と公差(float型)のタプルになります。
# retstep=True で公差を取得
np.linspace(2.0, 3.0, num=5, retstep=True)
start と step に数値のシーケンスを渡す
start と step には要素が数値の配列やリスト・タプルなどのシーケンスを渡すことができます。その場合は、それぞれの等差数列を生成します。
# start と step には配列やリストなどを渡すことも可能
a = np.array([0, 50])
b = [10, 100]
np.linspace(a, b, num=5)
この時、オプション引数の axis=
で生成する等差数列の、配列内における軸を指定することができます。
# 生成する配列の軸を変更
np.linspace(a, b, num=5, axis=1)
3. まとめ
ここまで見てきたように、np.linspace
関数は、指定の範囲の数値の中から、指定の要素数の等差数列を生成する関数です。
なお似た機能を持つ関数に、np.arange
関数があります。
冒頭で述べたとおり、基本的には、整数の等差数列を生成するならnp.arange
関数を、小数の等差数列を生成するならnp.linspace
関数を使うようにしましょう。np.linspace
関数の方が浮動小数点数の計算の精度が高いからです。これは扱うデータが大きくなればなるほど重要になります。
コメント