首页 > 解决方案 > 两个矩阵的所有列组合的分量乘积

问题描述

正如标题所说,我想计算两个矩阵的所有列组合的分量乘积。我已经找到了使用numpy.einsumand的解决方案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吗?

标签: numpyarray-broadcastingnumpy-einsumhstack

解决方案


以下改进将 替换hstack为调用reshape。这在高时释放了相当多的内存压力d

np.einsum('...j,...l -> ...jl', a, b).reshape(d, -1)


推荐阅读