2015-04-23 66 views
0

我使用numpy的做一些矩陣運算,我就如何實現以下兩個矩陣的特定行爲不確定:numpy的滑動點陣操作

(a)      (b)   (c) 
[1      [1 -1 0   [2 
1 (some operation) 1 -1 0  = -3 
1      0 -1 0   0 
1]      0 0 0]   0] 

所以基本上我想有一個(a)中的等價形式的矩陣,但是每個條目都是(a)中的條目,與(b)中的列相對應的是「虛線」。

我目前使用以下,但它似乎相當哈克,只讓我標量和我覺得必須有一個更好的辦法:

np.dot(a , np.atleast_2d(b[0].T[0]))[0].sum() = 2 
etc... 

有什麼建議?

+1

我不太清楚你在問什麼。因爲'b'只有3列,所以只有3個內積可以在'a'和'b'的列上計算:'a [:, 0] .dot(b [:, 0])'','a [:,0] .dot(b [:, 1])''和'a [:, 0] .dot(b [:,2])',所以我不明白你最終會得到一個輸出與'a'形狀相同。 –

回答

0

如果你初始化你的數據是這樣的:

b=np.zeros((4,3)) 
a=np.ones((4,1)) 
b[0:2,0]=1 
b[0:3,1]=-1 

您可以使用dot

np.dot(a.T,b) 

array([[ 2., -3., 0.]]) 

你想要什麼差不多。你的問題是你沒有b中的第四列,對應於a中的第四個元素。您可以將0添加到結果中,或者在b後面附加一列零以解決此問題。或者:

c=np.zeros_like(a) 
c[0:3]=np.dot(a.T,b).T