我试图从Python中的11x5矩阵中提取特定的5x5矩阵。有谁知道最好的方法是什么?感谢。
编辑:这就是我所拥有的。
[[ 1.0, 0.0, -0.0, 0.0, 0.0, 2.0, -0.1, -0.1, 0.3, -0.2, -0.3],
[ 0.0, 1.0, 0.0, 0.0, 0.0, 3.0, -1.1, -0.6, 1.6, -1.2, -0.4],
[ 0.0, 0.0, 1.0, 0.0, 0.0, 4.0, -2.0, -1.5, 2.7, -2.1, -0.8],
[-0.0, -0.0, 0.0, 1.0, 0.0, 5.0, -0.6, -0.7, 0.9, -0.5, -0.6],
[-0.0, -0.0, -0.0, -0.0, 1.0, 6.0, 0.0, -0.3, -0.4, 0.4, -0.2]]
我想在最后五列中制作一个矩阵。
答案 0 :(得分:1)
没有numpy:
[row[-5:] for row in matrix]
答案 1 :(得分:0)
您可以将矩阵转换为numpy
数组(假设它现在是基本的列表列表),然后使用高级numpy
索引/切片:
>>> m = [[ 1.0, 0.0, -0.0, 0.0, 0.0, 2.0, -0.1, -0.1, 0.3, -0.2, -0.3],
... [ 0.0, 1.0, 0.0, 0.0, 0.0, 3.0, -1.1, -0.6, 1.6, -1.2, -0.4],
... [ 0.0, 0.0, 1.0, 0.0, 0.0, 4.0, -2.0, -1.5, 2.7, -2.1, -0.8],
... [-0.0, -0.0, 0.0, 1.0, 0.0, 5.0, -0.6, -0.7, 0.9, -0.5, -0.6],
... [-0.0, -0.0, -0.0, -0.0, 1.0, 6.0, 0.0, -0.3, -0.4, 0.4, -0.2]]
>>> M = np.array(m)
>>> M[:,-5:]
array([[-0.1, -0.1, 0.3, -0.2, -0.3],
[-1.1, -0.6, 1.6, -1.2, -0.4],
[-2. , -1.5, 2.7, -2.1, -0.8],
[-0.6, -0.7, 0.9, -0.5, -0.6],
[ 0. , -0.3, -0.4, 0.4, -0.2]])
答案 2 :(得分:0)
使用 Numpy 。从任何矩阵中提取任何大小的子矩阵。
def submatrix( matrix, startRow, startCol, size):
return x[startRow:startRow+size,startCol:startCol+size]
<强>测试强>
>>>>import numpy as np
>>> a = [[ 1.0, 0.0, -0.0, 0.0, 0.0, 2.0, -0.1, -0.1, 0.3, -0.2, -0.3],
... [ 0.0, 1.0, 0.0, 0.0, 0.0, 3.0, -1.1, -0.6, 1.6, -1.2, -0.4],
... [ 0.0, 0.0, 1.0, 0.0, 0.0, 4.0, -2.0, -1.5, 2.7, -2.1, -0.8],
... [-0.0, -0.0, 0.0, 1.0, 0.0, 5.0, -0.6, -0.7, 0.9, -0.5, -0.6],
... [-0.0, -0.0, -0.0, -0.0, 1.0, 6.0, 0.0, -0.3, -0.4, 0.4, -0.2]]
>>>
>>> x = np.array(a)
>>> def submatrix( matrix, startRow, startCol, size):
... return x[startRow:startRow+size,startCol:startCol+size]
...
>>> print submatrix( a, 2, 4, 5)
[[ 0. 4. -2. -1.5 2.7]
[ 0. 5. -0.6 -0.7 0.9]
[ 1. 6. 0. -0.3 -0.4]]
由于此处的起始行为2,因此仅打印3行。