python – 对角线阵列上的numpy线性代数,没有明确的重复
作者:互联网
我有一个数组w(形状(3000,100,100)),我想与另一个数组e(形状(5,3000))相乘,使得结果k具有形状(5,5,100,100)和
k[:, :, i, j] = e @ np.diag(w[:, i, j]) @ e.T
由于w太大,因此制作一些形状为(3000,3000,100,100)的super_w数组并明确填充主对角线是不实际的.循环遍历i和j也不是非常有效.有没有一种内存有效的方法来做到这一点,除了将w分解成块?
解决方法:
随着np.einsum
–
k = np.einsum('li,ijk,mi->lmjk',e,w,e)
标签:python,numpy,numpy-broadcasting 来源: https://codeday.me/bug/20190622/1263651.html