正如标题所述,我想计算两个矩阵的所有列组合的按分量乘积。我已经找到了使用numpy.einsum
和numpy.hstack
的解决方案。我想知道是否有没有hstack
的解决方案。
让a = [a_1, a_2, ..., a_n]
是d x n
矩阵,b = [b_1, b_2, ..., b_m]
是d x m
矩阵。我想计算
[a_1b_1, a_1b_2, ..., a_nb_{n-1}, a_nb_n]
,
其中a_kb_l
是按分量计算的乘积,即a_kb_l = [a_{1,k}*b{1,l}, ..., a_{d,k}*b{d,l}].T
。
我的解决方法如下。np.hstack(np.einsum('...j,...l -> j...l', a, b))
我可以不用h_stack
吗?
以下改进以hstack
代替reshape
。 d
高时,这会释放相当大的内存压力。
np.einsum('...j,...l -> ...jl', a, b).reshape(d, -1)