用转置向量计算向量
Posted
技术标签:
【中文标题】用转置向量计算向量【英文标题】:Calculating a vectors with its transposed vector 【发布时间】:2020-10-16 21:03:30 【问题描述】:我正在计算一个矩阵内散点图,其中我有一个 50x20 的向量,而我遇到的事情是,将转置向量乘以原始向量,会给我一个维度错误,如下所示:
操作数不能与形状一起广播 (50,20) (20,50)
我尝试的是:array = my_array * my_array_transposed
并得到上述错误。
替代方案是这样做:
new_array = np.dot(my_array, np.transpose(my_array))
例如,在 Octave 中,这会容易得多,但由于矢量的大小,如果这是进行以下计算的方法,我很难确认基本事实:
因为据我所知,乘法是否是元素明智的。
我的问题是,我是否以正确的方式应用该公式?如果不是,将转置向量乘以非转置向量的正确方法是什么?
【问题讨论】:
*
是标量乘法,您需要矩阵-矩阵乘积。使用numpy.dot
或@
运算符。
在 MATLAB/Octave 中 .*
是逐元素乘法。 numpy
使用 *
。 np.dot
是处理矩阵乘法的原始函数。 @/matmul
是最近添加的。
【参考方案1】:
是的,np.dot
公式是正确的。如果您写array = my_array * my_array_transposed
,您是在要求 Python 执行逐分量乘法。相反,您需要在 numpy 中使用np.dot
实现逐列乘法。
【讨论】:
以上是关于用转置向量计算向量的主要内容,如果未能解决你的问题,请参考以下文章
R语言矩阵向量操作(矩阵乘法,向量内积外积(叉乘),矩阵转置,矩阵的逆)