NumPy linspace():等間隔の番号の配列を作成する方法

公開: 2022-04-11

このチュートリアルでは、 NumPy linspace()を使用してPythonで等間隔の数値の配列を作成する方法を説明します。

NumPy linspace()の構文を学習し、続いてその使用方法を理解するのに役立つ例を学習します。

注:このチュートリアルに従うには、PythonとNumPyがインストールされている必要があります。

NumPyをまだお持ちではありませんか? クイックインストールガイドをまとめました。

はじめましょう!

NumPyをインストールしてインポートする

チュートリアルを開始する前に、NumPyライブラリをインストールする手順を簡単に実行してみましょう。

すでにNumPyをインストールしている場合は、次のセクションに進んでください。

  • クラウドベースのJupyterノートブック環境であるGoogleColabを使用している場合は、NumPyをインポートして、すぐにコーディングを開始できます。 (このチュートリアルに推奨)
  • ローカル作業環境をセットアップしたい場合は、PythonのAnacondaディストリビューションをインストールすることをお勧めします。 Anacondaには、いくつかの便利なパッケージがプリインストールされています。 オペレーティングシステムのインストーラーをダウンロードできます。 セットアッププロセスはわずか数分で完了します。
  • コンピューターにPythonが既にインストールされている場合でも、Anacondaディストリビューションをインストールできます。 condaまたはpipを使用して、パッケージをインストールおよび管理できます。 Anacondaコマンドプロンプトから次のコマンドのいずれかを実行して、NumPyをインストールできます。
 # Install NumPy using conda conda install numpy # Install NumPy using pip pip install numpy

次のステップとして、次のコマンドを実行して、エイリアスnpnumpyをインポートします。 これを行うと、モジュール内のアイテムにアクセスするたびにnumpyを入力しなくても、NumPyをnpとして参照するのに役立ちます。

 import numpy as np

今後は、ドット表記を使用して、 np.<func-name>ようにNumPyライブラリ内のすべての関数にアクセスします。

等間隔の番号の場合

NumPy配列を使用している場合、間隔内に等間隔の数値の配列を作成する必要がある場合があります。

先に進む前に、別の同様の関数np.arange()を簡単に見てみましょう。

NumPy linspace()とNumPy arange()

以前にNumPyを使用したことがある場合は、 np.arange()を使用して、指定した範囲内の数値の配列を作成したことがあるでしょう。

np.arange(start, stop, step) stop 、ステップのstepで、 startから停止までの数値の配列を返すことを知っています。 デフォルトのステップサイズは1です。

ただし、 stepの値は必ずしも明白ではない場合があります。 なぜそうなるのか見てみましょう。

たとえば、0から1までの4つの等間隔の数値が必要な場合、ステップサイズは0.25でなければならないことがわかります。 ただし、 np.arange()を使用している場合は、停止値1が含まれていません。したがって、停止値を超える間隔を選択する必要があります。

次の画像は、区間[a、b]に特定の数の等間隔の点が必要ないくつかの例を示しています。

numpy-linspace
間隔内の等間隔のポイント

[0,1]の4つの等間隔のポイントの最初の例は十分に簡単でした。 ポイント間のステップサイズは0.25である必要があります。

もう少し複雑な例があるとします。1から33までの7つの等間隔のポイントをリストする必要があります。ここでは、ステップサイズがすぐには明確でない場合があります。 ただし、この場合、 stepの値を手動で計算することはできます。

ただし、 np.linspace()は、さらに簡単にするためにここにあります。

use-numpy-linspace
NumPylinspaceを使用する

np.linspace()を使用する場合、ステップサイズを気にすることなく、間隔内のポイント数を指定するだけで済みます。 そして、必要に応じてアレイを取得します。

この動機で、次のセクションでNumPy linspace()の構文を学びましょう。

NumPy linspace()の構文

NumPy linspace()を使用するための構文を以下に示します。

 np.linspace(start, stop, num, endpoint, retstep, dtype, axis)

最初は、上記の構文は多くのパラメーターで非常に複雑に見えるかもしれません。

ただし、それらのほとんどはオプションのパラメーターであり、ほんの数分ではるかに単純な構文に到達します。

それでは、上記の構文を解析することから始めましょう。

  • startstopは、それぞれ間隔の開始点と終了点です。 startとstopはどちらも、スカラーまたは配列にすることができます。 このチュートリアルでは、スカラーの開始値と終了値に制限します。
  • numは、等間隔のポイントの数です。 また、これはオプションのパラメーターであり、デフォルト値は50です。
  • endpointは、TrueまたはFalseのいずれかになり得るオプションのパラメーターでもあります。
  • デフォルト値はTrueです。これは、エンドポイントがデフォルトで間隔に含まれることを意味します。 ただし、エンドポイントを除外するためにFalseに設定できます。
  • retstepは、ブール値TrueまたはFalseを受け取るもう1つのオプションのパラメーターです。 Trueに設定すると、ステップ値が返されます。
  • dtypeは、配列内の数値のデータ型です。 タイプは通常floatとして推測され、明示的に指定する必要はありません。
  • axisは、数値を格納する軸を示すもう1つのオプションのパラメータです。 また、これは、 start値とstop値が配列自体である場合にのみ関係します。

️では、 np.linspace()は何を返しますか?

等間隔の数値のN次元配列を返します。 また、パラメータretstepTrueに設定されている場合は、ステップサイズも返します。

これまでの説明に基づいて、 np.linspace()を使用するための簡略化された構文を次に示します。

 np.linspace(start, stop, num)

上記のコード行は、区間[start, stop]内のnumの数値の配列を返します。

構文がわかったので、例のコーディングを始めましょう。

NumPy linspace()を使用して等間隔の配列を作成する方法

#1。 最初の例として、区間[1、5]に20個の等間隔の数値の配列を作成しましょう。

startstop 、およびnumの値をキーワード引数として指定できます。 これは、以下のコードセルに示されています。

 import numpy as np arr1 = np.linspace(start = 1,stop = 5,num = 20) print(arr1) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ]

配列内の数値が1で始まり、5で終わることに注意してください。これには、両方のエンドポイントが含まれます。 また、ポイント1と5を含む数値が、返された配列でfloatとしてどのように表されるかを観察します。

#2。 前の例では、 startstop 、およびnumの値をキーワード引数として渡しています。 引数を正しい順序で渡す場合は、以下に示すように、値のみを含む位置引数として使用することもできます。

 import numpy as np arr2 = np.linspace(1,5,20) print(arr2) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ]

#3。 次に、 retstepTrueに設定する別の配列を作成しましょう。

これは、関数が配列とステップの両方を返すことを意味します。 そして、それらを2つの変数arr3 :配列とstep_size :返されたステップサイズにアンパックできます。

次のコードセルは、その方法を説明しています。

 import numpy as np arr3, step_size = np.linspace(1,5,20,retstep = True) print(arr3) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ] # Output: print(step_size) 0.21052631578947367

#4。 最後の例として、 endpointFalseに設定し、何が起こるかを確認しましょう。

 import numpy as np arr4 = np.linspace(1,5,20,endpoint = False) print(arr4) # Output: [1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8 3. 3.2 3.4 3.6 3.8 4. 4.2 4.4 4.6 4.8]

返された配列には、1が含まれているのに対し、5は含まれていないことがわかります。 配列の最後の値はたまたま4.8ですが、まだ20個の数値があります。

これまでのところ、等間隔の数の配列のみを生成しました。 次のセクションでは、これらの数値をプロットして視覚化しましょう。

間隔で等間隔​​の数値をプロットする方法

このセクションでは、関心のある間隔として[10,15]を選択しましょう。 次に、 np.linspace()を使用して、それぞれ8ポイントと12ポイントの2つの配列を生成します。

これが完了したら、 matplotlibライブラリのploting関数を使用してそれらをプロットできます。

わかりやすくするために、 N1=8N2=12の2つの配列をy軸に沿った異なる位置に等間隔でクランプします。

次のコードスニペットはこれを示しています。

 import numpy as np import matplotlib.pyplot as plt N1 = 8 N2 = 12 a = 10 b = 15 y1 = np.zeros(N1) y2 = np.zeros(N2) x1 = np.linspace(a, b, N1) x2 = np.linspace(a, b, N2) plt.plot(x1, y1-0.5, 'o') plt.plot(x2, y2 + 0.5, 'o') plt.ylim([-1, 1]) plt.title(f'Evenly Spaced Numbers in the Interval [{a},{b}]') plt.xlabel('Interval') plt.show()
numpy-linspace-plot

等間隔の点を生成すると、数学関数を操作するときに役立ちます。 これについては、次のセクションで学習します。

数学関数でNumPylinspace()を使用する方法

np.linspace()を使用して等間隔の数値の配列を生成した後、区間内の数学関数の値を計算できます。

以下のコードセルでは、最初に0〜2πの間隔で50個の等間隔のポイントを生成します。 次に、配列xnp.sin()を使用して配列yを作成します。 デフォルト値は50であるため、 numパラメーターをスキップできることに注意してください。引き続き明示的に使用します。

次のステップとして、区間[0,2π]で正弦関数をプロットできます。 これを行うには、前の例のようにmatplotlibを使用できます。 具体的には、 matplotlib.pytplotplot()関数を使用して、折れ線グラフを作成します。

 import numpy as np import matplotlib.pyplot as plt N = 50 a = 0.0 b = 2*np.pi x = np.linspace(a, b, N) y = np.sin(x) plt.plot(x, y, marker = "o") plt.ylim([-1, 1]) plt.title(f'y = sin(x)') plt.xlabel('x ---->') plt.show()

ここで、 Nを10に設定して、上記のコードを実行します。次の図に示すようなプロットが得られます。

また、間隔内で10ポイントしか選択していないため、プロットがあまりスムーズではないことがわかります。

一般に、考慮するポイントの数が多いほど、関数のプロットはスムーズになります。

結論

これが私たちが学んだことの要約です。

  • np.linspace(start、stop、num)は、区間[start、stop]内のnum個の等間隔の数値の配列を返します。
  • オプションのパラメータendpointFalseに設定して停止を除外し、間隔を[start、stop)に設定します。
  • ステップサイズを取得するには、オプションでretstepTrueに設定します。
  • np.linspace()を使用して等間隔の配列を生成してから、数学関数で配列を使用します。

np.linspace()がどのように機能するかを理解していただければ幸いです。 上記の例をJupyterノートブックで実行することを選択できます。 Jupyterノートブック、または検討できる他のJupyterの代替案に関するガイドを確認してください。

また別のPythonチュートリアルでお会いしましょう。 それまでは、コーディングを続けてください。