2016-12-28 9 views
1

ここでは機械的な観点から、午後はすべて比較的簡単な質問です。配列に別の行列の指定された行ベクトルを掛けること

私は現在、PCAを実行しており、共分散行列と相関行列、および関連する固有スペクトルを計算するコードを書きました。

ここで、固有ベクトル列を表す配列を作成しました。変換C * v^tを計算したいと思います。ここで、cは観測行列であり、v^tは固有値の要素的なエントリです転置されたベクター。

ここで、これらの行列のいくつかは非常に大きいので、Pythonに固有ベクトル行列のどの行をmulitply Cにすることができるのが好きです。これまで私はいくつかの機能を試してみましたが、役に立たなかったのです。

(あなたは不思議のそれらのために、私はすべて固有vecotrsの行列積を計算する必要はありませんが、私はそれら-最大固有値に関連付けられているものの小さなサブセットによって乗算する必要があります)

ありがとう!

答えて

1

2次元配列Aのうち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

関連する問題