Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提取特定行/列值处的子矩阵_Python_Matrix_Slice - Fatal编程技术网

Python 提取特定行/列值处的子矩阵

Python 提取特定行/列值处的子矩阵,python,matrix,slice,Python,Matrix,Slice,我需要从行/列索引和切片距离切片2D输入数组。在下面的示例中,我可以从输入矩阵中提取3x3子矩阵,但如果不手动写下索引,我无法调整此代码以适应任何搜索距离: 例如: import numpy as np # create matrix mat_A = np.arange(100).reshape((10, 10)) row = 5 col = 5 # Build 3x3 matrix around the centre point matrix_three = ((row - 1, col

我需要从行/列索引和切片距离切片2D输入数组。在下面的示例中,我可以从输入矩阵中提取3x3子矩阵,但如果不手动写下索引,我无法调整此代码以适应任何搜索距离:

例如:

import numpy as np

# create matrix
mat_A = np.arange(100).reshape((10, 10))

row = 5
col = 5

# Build 3x3 matrix around the centre point
matrix_three = ((row - 1, col - 1),
                (row, col - 1),
                (row + 1, col - 1),
                (row - 1, col),
                (row, col),  # centre point
                (row + 1, col),
                (row - 1, col + 1),
                (row, col + 1),
                (row + 1, col + 1))

list_matrix_max_values = []

for loc in matrix_three:
    val = mat_A[loc[0]][loc[1]]
    list_matrix_max_values.append(val)


submatrix = np.matrix(list_matrix_max_values)
print(submatrix)
返回:

[[44 54 64 45 55 65 46 56 66]]
例如,如果我想在由行/列索引定义的单元格周围提取一个5x5矩阵,我该如何做同样的事情?
提前谢谢

Numpy具有矩阵切片功能,因此您可以对行和列进行切片

S=3 # window "radius"; S=3 gives a 5x5 submatrix
mat_A[row-S+1:row+S,col-S+1:col+S]
#array([[33, 34, 35, 36, 37],
#       [43, 44, 45, 46, 47],
#       [53, 54, 55, 56, 57],
#       [63, 64, 65, 66, 67],
#       [73, 74, 75, 76, 77]])
mat_A[4:7, 4:7]
返回

  [[44, 45, 46],
   [54, 55, 56],
   [64, 65, 66]]

完美的非常感谢!:)