16
選択した軸に沿ってnumpyテンソルを0で埋めたいと思います。 たとえば、テンソルの形状は(4,3,2)
ですが、最後の2軸だけをパディングすることになります(すなわち、マトリックスのみをパディングする)。それは1行のPythonコードで行うことは可能ですか?いくつかの軸に沿ってテンソルをゼロにする方法(Python)
選択した軸に沿ってnumpyテンソルを0で埋めたいと思います。 たとえば、テンソルの形状は(4,3,2)
ですが、最後の2軸だけをパディングすることになります(すなわち、マトリックスのみをパディングする)。それは1行のPythonコードで行うことは可能ですか?いくつかの軸に沿ってテンソルをゼロにする方法(Python)
あなたが使用することができnp.pad()
:
a = np.ones((4, 3, 2))
# npad is a tuple of (n_before, n_after) for each dimension
npad = ((0, 0), (1, 2), (2, 1))
b = np.pad(a, pad_width=npad, mode='constant', constant_values=0)
print(b.shape)
# (4, 6, 5)
print(b)
# [[[ 0. 0. 0. 0. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 0. 0. 0.]
# [ 0. 0. 0. 0. 0.]]
# [[ 0. 0. 0. 0. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 0. 0. 0.]
# [ 0. 0. 0. 0. 0.]]
# [[ 0. 0. 0. 0. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 0. 0. 0.]
# [ 0. 0. 0. 0. 0.]]
# [[ 0. 0. 0. 0. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 1. 1. 0.]
# [ 0. 0. 0. 0. 0.]
# [ 0. 0. 0. 0. 0.]]]
なお(n_before、n_after)行/列の数を参照しています。 2番目の次元の意味は、1行前(上)と2行後(下)です。同様に、(2,1)は2行前のことを意味します(0の2列分右にシフトし、1列の0を埋め込みます)。 – berto77
@ berto77コメントありがとうございました。 –