[英]Specific submatrix extraction in Python
这是一个非常简单的问题,但我找不到任何解决方案。
如果我有一个矩阵
A = np.array([[1,2,4,2],[1,2,35,4],[3,4,7,0],[8,3,2,6]])
我想提取由第一、第二和第四列和第一第二和第四行组成的子矩阵
在 MATLAB 中,我会简单地做A([1,2,4],[1,2,4])
,但我不能在 Python 中做到这一点。
有没有什么快速的方法可以做到这一点? 我需要避免 for 循环,因为我正在处理有限元代码。
您的问题的解决方案是np.ix_
:
A[np.ix_([0,1,3], [0,1,3])]
输出:
array([[1, 2, 2],
[1, 2, 4],
[8, 3, 6]])
如果你有这样的矩阵
matrix = [
[1, 2, 4, 2],
[1, 2, 35, 4],
[3, 4, 7, 0],
[8, 3, 2, 6]
];
并且您需要恢复交叉的列和行,您希望得到以下结果:
[1,2,4], [1,2,4]
=>
[
[1:1 1:2 1:4]
[2:1 2:2 2:4]
[4:1 4:2 4:4]
]
这是一个简单的实现。
def subMatrix(m, cols, rows):
result = []
for col in cols:
newRow = []
for row in rows:
newRow.append(m[col-1][row-1])
result.append(newRow)
return result
subMatrix(m=matrix, cols=[1,2,4], rows=[1,2,4])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.