Component-wise 两个矩阵的所有列组合的乘积
Component-wise Product of all Column Combinations of two Matrices
正如标题所说,我想计算两个矩阵所有列组合的component-wise乘积。我已经使用 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)
正如标题所说,我想计算两个矩阵所有列组合的component-wise乘积。我已经使用 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)