python输出n阶矩阵,写出n阶单位矩阵
一种方法是初始化4D的输出数组,然后从A向其赋值。这样的任务会传播价值观,而这正是我们在NumPy中获得效率的地方。在
因此,解决方案应该是这样的-#获得的形状
m,n=A形状
#将输出数组初始化为4D
out=np.zeros((m,N,N,N))
#获取用于索引到第二个和第四个轴的范围数组
r=np.arange(N)
#索引到第二个和第四个轴并选择所有元素
#其余的用来分配来自a的值。这些值被广播。
out[:r,r]=A
#最终重塑回2D
out.shape=(m*N,n*N)
作为函数-
^{pr2}$
要模拟np.kron(np.eye(N),A),只需沿着第一个和第二个轴交换操作,对于第三个和第四个轴-def kron_N_A(A,N): #模拟克朗
m,n=A形状
out=np.zeros((N,m,N,N),dtype=A.dtype)
r=np.arange(N)
out[r,r,=A
out.shape=(m*N,n*N)
退回去
时间安排-In [174]: N=100
.A=np.random.rand(100,100)
.
In [175]: np.allclose(np.kron(A,np.eye(N)),kron_A_N(A,N))
Out[175]:真的
In [176]: %timeit np.kron(A,np.eye(N))
一次循环,每次循环最好为3: 458毫秒
In [177]: %timeit kron_A_N(A,N)
10次循环,每次循环3: 58.4毫秒
[178]英寸:458/58.4
出[178]:17867.788888888617
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。