python - 用一列替换每一行
问题描述
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]
])
谢谢你。
解决方案
使用np.einsum
:
Y = np.zeros((n, l, m, l))
np.einsum('ijkj->jik', Y)[...] = X