【发布时间】:2021-12-30 12:13:55
【问题描述】:
我正在尝试使用不同的填充来填充 N 维矩阵的两个维度并覆盖这些值。考虑以下示例:
def determineShifts(layer):
u = range(0, 2*layer + 1)
b = range(0, 2*layer + 1)
shifts = []
mat = np.zeros((2 * layer + 1, 2 * layer + 1), dtype=object)
for x, i in enumerate(u):
for y, j in enumerate(b):
up = (j, 2*layer - j)
left = (i, 2*layer - i)
mat[x, y] = (left, up)
return mat
layer = 1
b = np.ones((3,3,3,3))
shifts = determineShifts(layer)
我想填充数组 b 的倒数第二个和最后一个维度,使得结果形状为 (3,3,5,5) 并覆盖该矩阵的元素并对所有节点重复该过程,在此案例是(3,3)。我宁愿覆盖这些值(目前我收到一个广播错误),而不是制作所需形状的副本并遍历第一维和第二维。下面是一个示例:
c = np.ones((3,3,5,5))
for i in range(np.shape(c)[0]):
for j in range(np.shape(c)[1]):
c[i,j] = np.pad(b[i,j], shifts[i,j])
是否有某种方法可以将函数应用于矩阵以将所有移位应用于每个元素 (3,3, 3, 3) -> (3, 3, 5, 5) 以便代码在计算上有效率吗?
【问题讨论】:
标签: python matrix multidimensional-array slice pad