2012-12-05 159 views
2

我是最近移民到Python世界。我需要弄清楚如何在Python中將矩陣複製到更大的矩陣。讓我來說明這一點與Matlab中的例子:如何在Python中將矩陣複製到更大的矩陣?

A = randn(4,4); 
B = eye(2,2); 
A(1:2,1:2) = B 

A = 

1.0000   0  3.5784  0.7254 
     0  1.0000  2.7694 - 0.0631 
-2.2588 - 0.4336 - 1.3499  0.7147 
0.8622  0.3426  3.0349 - 0.2050 

我試圖在下列方式使用NumPy的Python的類似的事情。

A = np.random.randn(4,4) 
B = np.eye(2,2) 
A[0:1,0:1] = B 

ValueError: output operand requires a reduction, but reduction is not enabled. 

當然,爲了避免這是使用循環最簡單的方法,但我想保持它量化。

有人可以請我指出一種不使用for循環的方式嗎?

回答

4

這裏的問題:

A[0:1,0:1] = B 

你想:

A[0:2,0:2] = B 

爲什麼?因爲Python使用半開範圍。所以分片[0:1]是半開範圍[0, 1),意思就是索引0;切片[0:2]是半開範圍[0, 2),這意味着索引01

+0

謝謝!這解決了我的問題。 –

+0

NumPy用戶指南應該有一個關於「要知道你是否來自XXX的東西」的章節...... – abarnert

+0

他們真的應該這樣做。這對我來說當然不是顯而易見的! –