将数组乘以另一个矩阵的指定行向量

时间:2016-12-28 20:10:34

标签: python numpy numpy-broadcasting

下午好,从机械的角度来看这里所有相对简单的问题。

我目前正在执行PCA并成功编写了一个代码,用于计算协方差矩阵和相关矩阵以及相关的特征谱。

现在,我创建了一个表示行特征向量的数组,我想计算变换C * v ^ t,其中c是观测矩阵,v ^ t是特征向量的元素明智条目转置。

现在,由于这些矩阵中的一些非常大 - 我希望能够告诉python哪一行特征向量矩阵多为C by。到目前为止,我已经尝试了一些numpy功能,但无济于事。

(对于那些你想知道的人,我不想计算所有特征向量的矩阵乘积,我只需要乘以它们的一小部分 - 与最大特征值相关的那个)

谢谢!

1 个答案:

答案 0 :(得分:1)

要从2维数组n中“切片”行A的向量,请使用类似A[n]的语法。如果它正在切割您想要的列,则语法为A[:,n]

对于具有numpy数组和向量的转换,语法使用矩阵乘法运算符:

>>> A = np.array([[0, -1], [1, 0]])
>>> vs = np.array([[1, 2], [3, 4]])
>>> A @ vs[0]  # this is a rotation of the first row of vs by A
array([-2,  1])
>>> A @ vs[1]  # this is a rotation of second row of vs by A
array([-4,  3])

注意:如果你使用的是较旧的python版本(< 3.5),那么你可能还没有@。然后,您必须使用function np.dot(array, vector)而不是运营商。