2013-11-15 177 views
2

有沒有人有Python在這個問題的快速解決方案。在矩陣A中,我希望在某個位置用C矩陣替換A中的值?Python Numpy - 矩陣替換全局矩陣中定義的矩陣..類似於Matlab

A= [ 1 2 3 4 4 
     2 3 4 5 3 
     4 5 6 7 2 
     5 6 7 8 9 
     6 7 8 9 0 ] 

C= [ 7 7 
     7 7 ] 

在位置LOC = [3-5]使得結果矩陣B如下所示:

B= [ 1 2 3 4 4 
     2 3 4 5 3 
     4 5 7 7 7 
     5 6 7 8 9 
     6 7 7 9 7 ] 

在Matlab中的代碼很容易:

A(loc,loc) = C 

我試過它是python:

A[loc,loc] = C 

沒有成功。有任何想法嗎?任何填充整體剛度矩陣與局部剛度模型,將在未來做很多次,但它通常是這樣的:

K(loc,loc) = K(loc,loc) + C 

無論如何,我希望這是一個好問題?我還沒有找到答案。

+0

你能不能給我們您是否嘗試過的代碼?顯示錯誤 – jabaldonedo

+0

也許這只是我,但不清楚如何從給定的'A','C'和'loc'結束給定的'B'。換句話說,你在嘗試什麼操作? – shx2

回答

5
import numpy as np 

A = np.array([ 1, 2, 3, 4, 4, 
     2, 3, 4, 5, 3, 
     4, 5, 6, 7, 2, 
     5, 6, 7, 8, 9, 
     6, 7, 8, 9, 0 ]).reshape(5, 5) 

B = np.array([60, 70, 80, 90]).reshape(2, 2) 

A[2:6:2, 2:6:2] = B # or 
A[np.ix_([2, 4], [2, 4])] = B 

print A 

輸出:

[[ 1 2 3 4 4] 
[ 2 3 4 5 3] 
[ 4 5 60 7 70] 
[ 5 6 7 8 9] 
[ 6 7 80 9 90]] 
+0

Yip ..就是這樣...... MATLAB只是失去了另一個手指。似乎失去了對我的最終控制......謝謝 – CromeX