NumPy を使った均等に間隔を空けた数の生成

Beginner

はじめに

このチュートリアルでは、NumPy ライブラリの numpy.linspace() 関数の使い方について説明します。この関数は、指定された区間で等間隔に数値を生成するために使用されます。numpy.arange() 関数と似ていますが、唯一の違いは、ステップサイズではなく、区間内の等間隔な値の数を num 引数を使って指定する点です。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替えて、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお尋ねください。セッション後にフィードバックを提供してください。そうすれば、迅速に問題を解決します。

構文の理解

numpy.linspace() 関数の構文は以下の通りです。

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

この関数は様々なパラメータを取ります。

  • start:区間の開始値。
  • stop:区間の終了値。
  • num:生成する区間内の等間隔なサンプル数。デフォルト値は 50。
  • endpoint:区間の終端を含めるかどうかを示すブール値。True の場合、終端が含まれる。False の場合、除外される。デフォルト値は True。
  • retstep:連続する数値間の間隔であるステップ値を返すかどうかを示すブール値。デフォルト値は False。
  • dtype:配列要素のデータ型。

linspace() を使って配列を生成する

numpy.linspace() を使って配列を生成するには、開始値、終了値、必要なサンプル数を渡すだけです。以下は例です。

import numpy as np

a = np.linspace(0, 10, num=11)
print(a)

このコードの出力は以下の通りです。

[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

終点を除外する

終端を除外するには、単に endpoint パラメータを False に設定します。以下は例です。

b = np.linspace(0, 10, num=10, endpoint=False)
print(b)

このコードの出力は以下の通りです。

[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

ステップ値を返す

linspace() によって生成される連続する数値間のステップまたは間隔値を返すには、retstep パラメータを True に設定します。以下は例です。

c, step = np.linspace(0, 10, num=11, retstep=True)
print(c)
print(step)

このコードの出力は以下の通りです。

[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
1.0

Linspace() を使ったグラフ描画

linspace()matplotlib を組み合わせてグラフを描画することができます。以下は例です。

import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

plt.plot(x, y)
plt.show()

このコードの出力は、単純なサイン波のグラフです。

非スカラー値の使用

NumPy の新しいバージョン以降、linspace() は開始パラメータと終了パラメータのスカラーでない値をサポートしています。以下は例です。

start = np.array([0, 1, 2])
end = np.array([6, 7, 8])
d = np.linspace(start, end, num=5, axis=1)
print(d)

このコードの出力は以下の通りです。

[[0.  1.5 3.  4.5 6. ]
 [1.  2.5 4.  5.5 7. ]
 [2.  3.5 5.  6.5 8. ]]

まとめ

このチュートリアルでは、NumPy ライブラリの numpy.linspace() 関数の使い方を示しました。構文、さまざまなパラメータ、そしていくつかの例を扱いました。この知識を元に、あなたは今、均等に間隔を空けた配列を迅速かつ効率的に生成することができます。