NumPy のパディング

Vaibhhav Khetarpal 2023年1月30日
  1. Python で NumPy.pad() 関数を使用して NumPy 配列をパディングする
  2. Python で shape() 関数を使用して NumPy 配列をパディングする
NumPy のパディング

Python では、配列を直接使用することはできません。ここで NumPy ライブラリが登場し、Python で配列を処理および操作できるようになります。

配列は、指定されたサイズと寸法にすることができます。特定のアレイの寸法を補正する必要がある場合があります。これは、パディングが役立つ場合です。

簡単に言うと、パディングとは、配列について話すときに、情報のない値(通常はゼロ)を任意の行または列に追加することを指します。これは、不足している配列またはマトリックスの行または列の数を補うために広く利用されています。

このチュートリアルでは、Python で NumPy 配列をパディングする方法を示します。たとえば、このチュートリアルでは、指定された NumPy 配列にゼロを埋め込みます。

Python で NumPy.pad() 関数を使用して NumPy 配列をパディングする

名前が示すように、NumPy.pad() 関数は、NumPy アレイでパディング操作を実行するために使用されます。

NumPy.pad() 関数の構文は次のとおりです。

numpy.pad(array, pad_width, mode="constant", **kwargs)

読者が理解しやすいように、NumPy.pad() 関数のすべてのパラメーターを以下に定義しました。

  1. array-このパラメーターは、パディングする必要のある配列を指定します。

  2. pad_width-すべての軸のエッジに追加される値の数を指定します。タプルは、多次元アレイの幅を指定するために使用されます。

  3. mode-オプションのパラメーターは、アレイのモードを指定します。

  4. **kwargs-関数内で引数の可変キーワード長を渡すことができます。言及することは任意であり、あなたはそれについてオンラインでもっと読むことができます。

    この記事の例では、この引数の使用については取り上げていません。

ここでは、多次元配列の例を取り上げますが、コードを少し調整することで、1 次元配列についても同じことができます。

次のコードは、NumPy.pad() 関数を使用して、Python で NumPy 配列をパディングします。

import numpy as np

x = np.array([[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]])
y = np.pad(x, [(0, 1), (0, 1)], mode="constant")
print(y)

上記のコードは、次の出力を提供します。

[[1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [0. 0. 0. 0. 0.]]

ここでは、多次元配列に対してパディング操作を実行して、その次元を指定されたサイズに拡張します。

Python で shape() 関数を使用して NumPy 配列をパディングする

これは、NumPy.pad() 関数と同じ結果を達成することもできる間接的な方法です。shape() 関数は、NumPy ライブラリに含まれる関数の 1つであり、このライブラリをコードにインポートした後にアクセスできます。

shape 関数は、特定の配列またはマトリックスの寸法を決定するために使用されます。

この方法は、ユーザーのニーズに応じて目的の寸法の新しい null マトリックスを作成し、元のマトリックスを新しく作成された null マトリックスに挿入するため、少し拡張されています。それは同じ結果を達成しますが、結果に到達するための旅の中で異なる間接的な道をたどります。

shape() 関数とは別に、このアプローチでは NumPy.zeros() メソッドを使用してヌルマトリックスを作成します。

このアプローチでは、最初にヌルマトリックスを作成するために必要な最終ディメンションの参照を取得するため、パディング後のユーザーのターゲットディメンションのニーズを満たすディメンションの参照マトリックスが必要です。

次のコードは、shape() 関数を使用して、Python で NumPy 配列を埋め込みます。

import numpy as np

x = np.array([[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]])
y = np.array(
    [
        [1.0, 1.0, 1.0, 1.0, 1.0],
        [1.0, 1.0, 1.0, 1.0, 1.0],
        [1.0, 1.0, 1.0, 1.0, 1.0],
        [1.0, 1.0, 1.0, 1.0, 1.0],
    ]
)
z = np.zeros(np.shape(y))
z[: x.shape[0], : x.shape[1]] = x
print(z)

上記のコードは、次の出力を提供します。

[[1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [0. 0. 0. 0. 0.]]
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn