编程语言
首页 > 编程语言> > python – 对角线阵列上的numpy线性代数,没有明确的重复

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