如何沿某个轴用零填充张量(Python)
我想沿着选择的轴用0填充一个numpy张量。 例如,我有张量如何沿某个轴用零填充张量(Python),python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,我想沿着选择的轴用0填充一个numpy张量。 例如,我有张量r,形状(4,3,2),但我只对填充最后两个轴感兴趣(即,仅填充矩阵)。是否可以使用一行python代码执行此操作?您可以使用: 此功能将在特定轴的末端进行填充。 如果你想把两边都垫上,只需修改它 def pad_along_axis(array: np.ndarray, target_length: int, axis: int = 0): pad_size = target_length - array.shape[axi
r
,形状(4,3,2)
,但我只对填充最后两个轴感兴趣(即,仅填充矩阵)。是否可以使用一行python代码执行此操作?您可以使用:
此功能将在特定轴的末端进行填充。
如果你想把两边都垫上,只需修改它
def pad_along_axis(array: np.ndarray, target_length: int, axis: int = 0):
pad_size = target_length - array.shape[axis]
if pad_size <= 0:
return array
npad = [(0, 0)] * array.ndim
npad[axis] = (0, pad_size)
return np.pad(array, pad_width=npad, mode='constant', constant_values=0)
注意(n_before,n_after)是指行/列的数量;所以上面的(1,2),对于第二维度意味着,前面一行(上面),后面两行(下面)。同样,(2,1)表示之前的2行(向右移动2列0,向左移动,用1列0填充)。@berto77谢谢你的评论,我一直在努力
len(array.shape)==array.ndim
。此外,如果pad\u size,你可以安全地返回
def pad_along_axis(array: np.ndarray, target_length: int, axis: int = 0):
pad_size = target_length - array.shape[axis]
if pad_size <= 0:
return array
npad = [(0, 0)] * array.ndim
npad[axis] = (0, pad_size)
return np.pad(array, pad_width=npad, mode='constant', constant_values=0)
>>> a = np.identity(5)
>>> b = pad_along_axis(a, 7, axis=1)
>>> print(a, a.shape)
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]] (5, 5)
>>> print(b, b.shape)
[[1. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0.]] (5, 7)