2016-12-28 142 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