我有一个一维数组A= a, b, c...和三维数组T的形状(N_A,N_B,N_A)。A是指用N_A矩阵表示对角线N_A。
我想用T来做A的收缩,而不需要把A提升到高密度的存储。特别是,我想
np.einsum('ij, ikl', A, T)和
np.einsum('ikl, lm', T, A)在保持稀疏的情况下,能做这样的事情吗?
注意:这个问题类似于
dot product with diagonal matrix, without creating it full matrix
但不完全相同,因为我不清楚如何推广到更复杂的索引模式。
发布于 2016-08-29 01:51:29
np.einsum('ij, ikl', np.diag(a), t)等同于(a * t.T).T。
np.einsum('ikl, lm', t, np.diag(a))等同于a * t。
(经反复试验发现)
https://stackoverflow.com/questions/39197421
复制相似问题