【发布时间】:2019-02-07 14:56:28
【问题描述】:
我有 K(这里设 K 为 7)区分维度为 (50,50) 的矩阵。
我想通过用 K 矩阵填充对角线来创建一个新矩阵 L。因此 L 的维度是 (50*K,50*K)。
我尝试了什么?
K1=np.random.random((50,50))
N,N=K1.shape
K=7
out=np.zeros((K,N,K,N),K1.dtype)
np.einsum('ijik->ijk', out)[...] = K1
L=out.reshape(K*N, K*N) # L is of dimension (50*7,50*7)=(350,350)
它确实通过在对角线内将 K1 堆叠七次来创建一个新矩阵 L。但是,我想分别堆叠 K1,K2,K3,K5,K6,K7 而不是 K1 七次。
输入:
K1=np.random.random((50,50))
K2=np.random.random((50,50))
K3=np.random.random((50,50))
K4=np.random.random((50,50))
K5=np.random.random((50,50))
K6=np.random.random((50,50))
K7=np.random.random((50,50))
L=np.zeros((50*7,50*7))#
预期输出:
L[:50,:50]=K1
L[50:100,50:100]=K2
L[100:150,100:50]=K3
L[150:200,150:200]=K4
L[200:250,200:250]=K5
L[250:300,250:300]=K6
L[300:350,300:350]=K7
【问题讨论】:
-
您能展示一个输入及其预期输出的小例子吗?
-
@jdehesa 请看我的更新
标签: python-3.x numpy matrix diagonal numpy-einsum