有没有人在Python中有这个问题的快速解决方案。在矩阵A中,我希望用某个位置的C矩阵替换A中的值?
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 :(得分: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]]