我想将以下问题并行化。给定一个数组w
的形状(dim1,)
和一个矩阵A
的形状(dim1, dim2)
,我希望A
的每一行乘以w
的对应元素。
那是很琐碎的
但是,我想对一组数组w
这样做,并最终对结果求和。因此,为了避免for循环,我用shape (n_samples, dim1)
创建了矩阵W
,并以以下方式使用了np.einsum
函数:
x = np.einsum('ji, ik -> jik', W, A))
r = x.sum(axis=0)
其中x
的形状为(n_samples, dim1, dim2)
,且最终和的形状为(dim1, dim2)
我注意到np.einsum
对于大型矩阵A
来说相当慢。有没有更有效的方法来解决这个问题?我还想尝试使用np.tensordot
,但可能情况并非如此
谢谢:-)
你的计算:
如注释中所述,
einsum
可以对j
执行求和:由于
j
只出现在A
中,我们可以首先对A
求和:这不涉及乘积和,矩阵乘法也不涉及
或者在乘法后求和:
相关问题 更多 >
编程相关推荐