テクノロジー 開発 非公開: NumPy linspace(): 等間隔の数値の配列を作成する方法

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

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

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

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

NumPy をまだお持ちでない場合は、簡単なインストールガイドをまとめました。

はじめましょう!

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

NumPy のインストールとインポート

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

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

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

# Install NumPy using pip
pip install numpy

次のステップとして、次のコマンドを実行して、エイリアス np の下で numpy インポートします。こうすることで、モジュール内の項目にアクセスするたびに numpy を入力する必要がなく、NumPy を np として参照できるようになります。

 import numpy as np

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

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

等間隔の数字の場合

NumPy 配列を使用する場合、一定間隔で等間隔​​の数値の配列を作成する必要がある場合があります。

先に進む前に、別の同様の関数 np.arange() について簡単に説明しましょう。

NumPy linspace() と NumPy arange() の比較

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

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

ただし、 step の値が必ずしも明らかであるとは限りません。なぜそうなるのか見てみましょう。

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

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

間隔内の等間隔の点
numpy-linspace
numpy-linspace

[0,1] 内に 4 つの等間隔の点を配置​​する最初の例は、十分に簡単でした。ポイント間のステップ サイズは 0.25 でなければならないことがわかります。

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

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

NumPy リンスペースを使用する
numpy-linspace を使用する
numpy-linspace を使用する

np.linspace() を使用する場合、ステップ サイズを気にせずに、間隔内のポイントの数を指定するだけで済みます。そして、必要に応じて配列が返されます。

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

NumPy linspace() の構文

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

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

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

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

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

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

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

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

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

 np.linspace(start, stop, num)

上記のコード行は [start, stop] の間隔で等間隔​​に配置された num 個の数値の配列を返します。

構文は理解できたので、コーディング例を始めましょう。

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

#1. 最初の例として、[1, 5] の間隔で等間隔​​に配置された 20 個の数値の配列を作成しましょう。

start stop 、および 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. 前の例では、 start stop 、および 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. 次に、 retstep True に設定する別の配列を作成しましょう。

これは、関数が配列とステップの両方を返すことを意味します。そして、それらを 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. 最後の例として、 endpoint False に設定して、何が起こるかを確認してみましょう。

 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 ライブラリのプロット関数を使用してそれらをプロットできます。

わかりやすくするために、 N1 = 8 および N2 = 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
numpy-linspace-plot

等間隔の点を生成すると、数学関数を使用する場合に役立ちます。それについては次のセクションで学びます。

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

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

以下のコード セルでは、まず 0 ~ 2π の間隔で等間隔​​に配置された 50 個の点を生成します。次に、配列 x に対して np.sin() を使用して配列 y を作成します。デフォルト値は 50 であるため、 num パラメータを省略できることに注意してください。引き続き明示的に使用します。

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

 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 個 の等間隔の数値の配列を返します。
  • stop を除外するには、オプションのパラメーター endpoint False に設定し、間隔を [start, stop) に設定します。
  • ステップ サイズを取得するには、オプションで retstep を True に設定します。
  • np.linspace() を使用して等間隔の配列を生成し、その配列を数学関数で使用します。

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

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

「 NumPy linspace(): 等間隔の数値の配列を作成する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonで配列を作成する方法|numpy.arange
【毎日Python】Pythonで全ての要素が0や1の配列を作成する方法|numpy.zeros/ones

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

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

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

NumPy をまだお持ちでない場合は、簡単なインストールガイドをまとめました。

はじめましょう!

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

NumPy のインストールとインポート

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

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

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

# Install NumPy using pip
pip install numpy

次のステップとして、次のコマンドを実行して、エイリアス np の下で numpy インポートします。こうすることで、モジュール内の項目にアクセスするたびに numpy を入力する必要がなく、NumPy を np として参照できるようになります。

 import numpy as np

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

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

等間隔の数字の場合

NumPy 配列を使用する場合、一定間隔で等間隔​​の数値の配列を作成する必要がある場合があります。

先に進む前に、別の同様の関数 np.arange() について簡単に説明しましょう。

NumPy linspace() と NumPy arange() の比較

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

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

ただし、 step の値が必ずしも明らかであるとは限りません。なぜそうなるのか見てみましょう。

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

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

間隔内の等間隔の点
numpy-linspace
numpy-linspace

[0,1] 内に 4 つの等間隔の点を配置​​する最初の例は、十分に簡単でした。ポイント間のステップ サイズは 0.25 でなければならないことがわかります。

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

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

NumPy リンスペースを使用する
numpy-linspace を使用する
numpy-linspace を使用する

np.linspace() を使用する場合、ステップ サイズを気にせずに、間隔内のポイントの数を指定するだけで済みます。そして、必要に応じて配列が返されます。

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

NumPy linspace() の構文

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

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

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

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

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

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

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

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

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

 np.linspace(start, stop, num)

上記のコード行は [start, stop] の間隔で等間隔​​に配置された num 個の数値の配列を返します。

構文は理解できたので、コーディング例を始めましょう。

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

#1. 最初の例として、[1, 5] の間隔で等間隔​​に配置された 20 個の数値の配列を作成しましょう。

start stop 、および 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. 前の例では、 start stop 、および 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. 次に、 retstep True に設定する別の配列を作成しましょう。

これは、関数が配列とステップの両方を返すことを意味します。そして、それらを 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. 最後の例として、 endpoint False に設定して、何が起こるかを確認してみましょう。

 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 ライブラリのプロット関数を使用してそれらをプロットできます。

わかりやすくするために、 N1 = 8 および N2 = 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
numpy-linspace-plot

等間隔の点を生成すると、数学関数を使用する場合に役立ちます。それについては次のセクションで学びます。

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

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

以下のコード セルでは、まず 0 ~ 2π の間隔で等間隔​​に配置された 50 個の点を生成します。次に、配列 x に対して np.sin() を使用して配列 y を作成します。デフォルト値は 50 であるため、 num パラメータを省略できることに注意してください。引き続き明示的に使用します。

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

 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 個 の等間隔の数値の配列を返します。
  • stop を除外するには、オプションのパラメーター endpoint False に設定し、間隔を [start, stop) に設定します。
  • ステップ サイズを取得するには、オプションで retstep を True に設定します。
  • np.linspace() を使用して等間隔の配列を生成し、その配列を数学関数で使用します。

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

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

「 NumPy linspace(): 等間隔の数値の配列を作成する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonで配列を作成する方法|numpy.arange
【毎日Python】Pythonで全ての要素が0や1の配列を作成する方法|numpy.zeros/ones