我有一个数组
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
分成块?