我有一个形状(n,n)的矩阵A和另一个形状(p,n)的矩阵b。我需要得到一个矩阵C,这样
C[i] = (A * b[i, np.newaxis, :]) * b[i, :, np.newaxis]
我目前正在通过执行np.matlib.repmat(A)然后使用np.einsum执行此操作
A1 = np.matlib.repmat(A, p, 1).reshape(p, n, n)
C = np.einsum('ijk, ij..., ik... -> ijk', A1, b, b)
但是我可以看到创建A1是浪费资源,因为它只是一遍又一遍地使用相同的值。无论如何我可以在不创建中间矩阵A1的情况下做到这一点吗?