用一列替换每一行
Replacing each row with a column
给定一个形状为 (n, m)
的数组 X
和另一个给定的数字 l
我怎样才能得到一个形状为 (n, l, m, l)
的数组 Y
其中 Y[i, j, :, :]
是已将第 j
列替换为 X 的第 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
给定一个形状为 (n, m)
的数组 X
和另一个给定的数字 l
我怎样才能得到一个形状为 (n, l, m, l)
的数组 Y
其中 Y[i, j, :, :]
是已将第 j
列替换为 X 的第 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