2016-12-28 145 views
1

下午好,所有相对简单的问题都是从机械的角度出发的。将数组乘以另一个矩阵的指定行向量

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

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

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

(对于那些你想知道的,我不想来计算所有的本征vecotrs的矩阵产品,我只需要他们,在与最大特征值关联的各个的一小部分乘)

谢谢!

回答

1

要使用类似于A[n]的语法从“二维数组”中排除n行的向量,请使用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),你可能没有@可用然而。然后,您将不得不使用functionnp.dot(array, vector)而不是运营商。

+0

我在跑3.6,所以我觉得我应该没问题! – user7351362