我有一个数组w
(形状(3000, 100, 100)
)我希望与另一个数组e
(形状(5, 3000)
)相乘,以便结果k
具有形状(5, 5, 100, 100)
和
k[:, :, i, j] = e @ np.diag(w[:, i, j]) @ e.T
由于w
太大,因此制作一些形状为super_w
的{{1}}数组并明确填充主对角线是不切实际的。循环遍历(3000, 3000, 100, 100)
和i
也不是非常有效。除了将j
拆分成块之外,还有一种记忆效率高的方法吗?