用转置向量计算向量

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语言矩阵向量操作(矩阵乘法,向量内积外积(叉乘),矩阵转置,矩阵的逆)

R语言矩阵向量操作(矩阵乘法,向量内积外积(叉乘),矩阵转置,矩阵的逆)

P5 转置置换向量空间子空间线性代数

矩阵和向量相乘

Hermitian 矩阵的特征向量

2一个向量乘它的转置,其几何意义是什么?