首页 > 解决方案 > 用一列替换每一行

问题描述

X给定一个形状数组(n, m)和另一个给定数字l,我如何获得一个Y形状数组,(n, l, m, l)其中Y[i, j, :, :]空矩阵已被X 的第 - 行替换j第 - 列。i

例如,如果

X = np.array([
    [1, 2, 3, 4],
    [2, 3, 4, 5],
    [3, 4, 5, 6]])
l = 5

然后

Y[2, 3] = np.array([
    [0, 0, 0, 3, 0],
    [0, 0, 0, 4, 0],
    [0, 0, 0, 5, 0],
    [0, 0, 0, 6, 0]
])

谢谢你。

标签: pythonnumpynumpy-ndarray

解决方案


使用np.einsum

Y = np.zeros((n, l, m, l))
np.einsum('ijkj->jik', Y)[...] = X

推荐阅读