Python の numpy モジュールは、配列のパディングを実行する numpy.pad() という関数を提供します。この関数には、いくつかの必須パラメータとオプションのパラメータがあります。
構文:
numpy.pad(array, pad_width, mode='constant', **kwargs)
パラメーター:
配列: array_like
これは、パディングするソース配列です。
Pad_width: int、sequence、または array_like
このパラメータは、各軸の端に埋め込まれる値の数を定義します。各軸の一意のパッド幅は、(before_1、after_1)、(before_2、after_2)、... (before_N、after_N)) として定義されます。各軸の ((前、後)、) はパッドの前後と同じように扱われます。すべての軸について、int または (pad,) は、before = after = パッド幅へのショートカットです。
モード: str または function (オプション)
このパラメータには、次のいずれかの文字列値が含まれます。
'定数'(デフォルト)
ハッシュテーブルとハッシュマップ
モードパラメータに定数値を割り当てると、パディングは定数値で行われます。
'角'
配列のエッジの値です。パディングはこのエッジ値で行われます。
'リニアランプ'
この値は、エッジ値と終了値の間の線形ランプによるパディングを実行するために使用されます。
'最大'
このパラメーター値は、各軸に沿ったベクトルの一部またはすべての最大値を使用してパディングを実行します。
'平均'
このパラメータ値は、各軸に沿ったベクトルの一部または全体の平均値を介してパディングを実行します。
「中央値」
このパラメータ値は、各軸に沿ってベクトルの一部または全体の中央値を介してパディングを実行します。
'最小'
このパラメータ値は、各軸に沿ってベクトルの一部または全体の最小値を介してパディングを実行します。
'反映する'
この値は、各軸に沿って開始ベクトル値と終了ベクトル値に反映されるベクトル反射を介して配列をパディングします。
「対称」
この値は、ベクトル反射を介して配列をパディングするために使用され、配列のエッジに沿ってミラーリングされます。
'包む'
この値は、軸に沿ったベクトルのラップを介して配列のパディングを実行するために使用されます。開始値は末尾のパディングに使用され、終了値は先頭のパディングに使用されます。
'空の'
この値は、配列に未定義の値を埋め込むために使用されます。
stat_length: int または sequence (オプション)
このパラメータは「最大値」、「最小値」、「平均値」、「中央値」で使用されます。これは、静的な値の計算に使用される、各エッジ軸の値の数を定義します。
constant_values: スカラーまたはシーケンス (オプション)
このパラメータは「定数」で使用されます。各軸にパディング値を設定するための値を定義します。
end_values: スカラーまたはシーケンス (オプション)
このパラメータは「linear_ramp」で使用されます。これは、linear_ramp の最後の値に使用される値を定義し、パディングされた配列のエッジを形成します。
Reflect_type: 偶数または奇数 (オプション)
このパラメータは「対称」と「反射」で使用されます。デフォルトでは、reflect_type は「even」で、エッジ値の周囲の反射は変更されていません。エッジ値の 2 倍から反射値を減算することにより、「奇数」スタイルの配列の拡張部分が作成されます。
戻り値:
パッド: ndarray
Javaの文字から整数へ
この関数は、配列と等しいランクのパディングされた配列を返します。その形状は、pad_width に従って増加します。
例 1:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'constant', constant_values=(6, 4)) y
出力:
array([6, 6, 6, 1, 3, 2, 5, 4, 4, 4])
上記のコードでは
- numpy をエイリアス名 np でインポートしました。
- 値 x のリストを作成しました。
- 変数 y を宣言し、np.pad() 関数の戻り値を割り当てました。
- リスト x、pad_width を渡し、モードを次のように設定しました。 絶え間ない そして 定数値 関数内で。
- 最後に、y の値を出力してみました。
出力には、定義されたサイズと値が埋め込まれた ndarray が表示されます。
例 2:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'edge') y
出力:
array([1, 1, 1, 1, 3, 2, 5, 4, 4, 4])
例 3:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'linear_ramp', end_values=(-4, 5)) y
出力:
array([-4, -2, 0, 1, 3, 2, 5, 4, 4, 5])
例 4:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'maximum') y
出力:
array([5, 5, 5, 1, 3, 2, 5, 4, 5, 5, 5])
例 5:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'mean') y
出力:
array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])
例 6:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'median') y
出力:
array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])
例 7:
import numpy as np a = [[1, 2], [3, 4]] y = np.pad(x, (3,), 'minimum') y
出力:
array([[1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [3, 3, 3, 3, 4, 3, 3], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1]])
例 8:
import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) y = np.pad(x, 3, pad_with) y
出力:
array([41, 31, 21, 11, 21, 31, 41, 51, 41, 31])
上記のコードでは
- numpy をエイリアス名 np でインポートしました。
- 関数を作成しました パッド付き と ベクター 、 パッド幅 、 iaxis 、 そして クワーグス 。
- パディング値を取得するために、変数pad_valueを宣言しました。 得る() 関数。
- パディング値をベクトルの一部に渡しました。
- np.arange() 関数を使用して配列 x を作成し、 reshape() 関数を使用して形状を変更しました。
- 変数 y を宣言し、np.pad() 関数の戻り値を割り当てました。
- 関数にリストxとpad_widthを渡しました。
- 最後に、y の値を出力してみました。
出力には、定義されたサイズと値が埋め込まれた ndarray が表示されます。
例9:
import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with)
出力:
array([[10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 0, 1, 10, 10, 10], [10, 10, 10, 2, 3, 10, 10, 10], [10, 10, 10, 4, 5, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10]])
例 10:
import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): ... pad_value = kwargs.get('padder', 10) ... vector[:pad_width[0]] = pad_value ... vector[-pad_width[1]:] = pad_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with, padder=100)
出力:
array([[100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 0, 1, 100, 100, 100], [100, 100, 100, 2, 3, 100, 100, 100], [100, 100, 100, 4, 5, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100]])