Numpy.padの多次元行列の中のパラメータは通俗的にnpを解析する.pad(a, ((x1, y1), (x2, y2), (x3, y3)), 'constant')
最近pad関数を見て、多くの参考資料がpad関数を3次元マトリクスに適用する場合、中のパラメータの解釈が分からないので、自分でまとめて・・・
・・・このような3次元マトリクスを定義しpad法を用いて・・・
・・・まず解釈(a,((x 1,y 1),(x 2,y 2),(x 3,y 3),‘constant’)におけるaが自然に表す埋めたい行列,‘constant’は,各行列の埋め込みのような要素重点解釈(x 1,y 1),(x 2,y 2),(x 3,y 3)を表す
(x 1,y 1)解釈:(x 1,y 1)は、aという3次元マトリクスにおいて、大きなマトリクス全体にx 1を先頭にそれぞれ追加することを意味し、y 1個はaの各マトリクスの形状と同じ0マトリクス(なぜ0なのか、明記しない場合、デフォルトの充填は0である)を表す.すなわち、マトリクス群aにおいて、先頭にx 1個の[[0,0],[0,0]]マトリクスを追加し、後にy 1個の[[0,0],[0,0]]マトリクスを追加する.例えば、次のプログラムを実行
印刷結果・・・
・・・図に示すように、マトリクス群では、先頭に1(x 1)個の0マトリクスを追加し、末尾に1(y 1)個の0マトリクスを記入する
(x 2,y 2)解釈:(x 2,y 2)は、x 2行0要素を各マトリクスグループの上に埋め込み、下にy 2行0要素を埋め込むことを表す(なぜ0なのか、明記しない場合、デフォルトの埋め込みは0であるため)
···
・・・図に示すように、各マトリクスの上に1行(x 2)0要素、下に2行(y 2)0要素が埋め込まれている
(x 3,y 3)解釈:(x 3,y 3)は、x 3列0要素を各マトリクスグループの右側に埋め込み、y 3列0要素を左に埋め込むことを表す(なぜ0なのか、明記しない場合、デフォルトの埋め込みは0であるため)
···
・・・図に示すように、各マトリクスの右側には2列(x 3)0要素、左側には3列(y 3)0要素が埋め込まれている
a = np.array([[[1, 2],
[2, 3]],
[[2, 4],
[5, 6]],
[[7, 8],
[9, 10]]])
・・・このような3次元マトリクスを定義しpad法を用いて・・・
np.pad(a, ((x1, y1), (x2, y2), (x3, y3)), 'constant')
・・・まず解釈(a,((x 1,y 1),(x 2,y 2),(x 3,y 3),‘constant’)におけるaが自然に表す埋めたい行列,‘constant’は,各行列の埋め込みのような要素重点解釈(x 1,y 1),(x 2,y 2),(x 3,y 3)を表す
(x 1,y 1)解釈:(x 1,y 1)は、aという3次元マトリクスにおいて、大きなマトリクス全体にx 1を先頭にそれぞれ追加することを意味し、y 1個はaの各マトリクスの形状と同じ0マトリクス(なぜ0なのか、明記しない場合、デフォルトの充填は0である)を表す.すなわち、マトリクス群aにおいて、先頭にx 1個の[[0,0],[0,0]]マトリクスを追加し、後にy 1個の[[0,0],[0,0]]マトリクスを追加する.例えば、次のプログラムを実行
np.pad(a, ((1, 1), (0, 0), (0, 0)), 'constant'))
印刷結果・・・
[[[ 0 0]
[ 0 0]],
[[ 1 2]
[ 2 3]],
[[ 2 4]
[ 5 6]],
[[ 7 8]
[ 9 10]],
[[ 0 0]
[ 0 0]]]
・・・図に示すように、マトリクス群では、先頭に1(x 1)個の0マトリクスを追加し、末尾に1(y 1)個の0マトリクスを記入する
(x 2,y 2)解釈:(x 2,y 2)は、x 2行0要素を各マトリクスグループの上に埋め込み、下にy 2行0要素を埋め込むことを表す(なぜ0なのか、明記しない場合、デフォルトの埋め込みは0であるため)
np.pad(a, ((0, 0), (1, 2), (0, 0)), 'constant'))
···
[[[ 0 0]
[ 1 2]
[ 2 3]
[ 0 0]
[ 0 0]],
[[ 0 0]
[ 2 4]
[ 5 6]
[ 0 0]
[ 0 0]],
[[ 0 0]
[ 7 8]
[ 9 10]
[ 0 0]
[ 0 0]]]
・・・図に示すように、各マトリクスの上に1行(x 2)0要素、下に2行(y 2)0要素が埋め込まれている
(x 3,y 3)解釈:(x 3,y 3)は、x 3列0要素を各マトリクスグループの右側に埋め込み、y 3列0要素を左に埋め込むことを表す(なぜ0なのか、明記しない場合、デフォルトの埋め込みは0であるため)
np.pad(a, ((0, 0), (0, 0), (2, 3)), 'constant')
···
[[[ 0 0 1 2 0 0 0]
[ 0 0 2 3 0 0 0]],
[[ 0 0 2 4 0 0 0]
[ 0 0 5 6 0 0 0]],
[[ 0 0 7 8 0 0 0]
[ 0 0 9 10 0 0 0]]]
・・・図に示すように、各マトリクスの右側には2列(x 3)0要素、左側には3列(y 3)0要素が埋め込まれている