Component-wise 两个矩阵的所有列组合的乘积

Component-wise Product of all Column Combinations of two Matrices

正如标题所说,我想计算两个矩阵所有列组合的component-wise乘积。我已经使用 numpy.einsumnumpy.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)