Numpy.padの多次元行列の中のパラメータは通俗的にnpを解析する.pad(a, ((x1, y1), (x2, y2), (x3, y3)), 'constant')


最近pad関数を見て、多くの参考資料がpad関数を3次元マトリクスに適用する場合、中のパラメータの解釈が分からないので、自分でまとめて・・・
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要素が埋め込まれている