对于Python,有很多关于从更大的网格中提取每一个可能的nxn网格的帖子,但是如果我只想从整个mxm网格中提取居中的nxn网格,我就会绕圈运行来解决这个问题。
例如:
>>> c = np.random.randint(1,20,size=(9,9))
>>> a
array([[ 8, 9, 4, 1, 3, 10, 14, 13, 2],
[ 7, 3, 1, 14, 4, 11, 19, 5, 14],
[11, 1, 7, 1, 17, 17, 8, 8, 17],
[13, 18, 16, 12, 10, 7, 19, 6, 8],
[15, 2, 13, 15, 1, 1, 2, 5, 15],
[18, 8, 7, 6, 8, 3, 13, 15, 12],
[10, 18, 18, 2, 4, 6, 1, 8, 13],
[ 5, 6, 6, 18, 4, 11, 5, 10, 19],
[15, 14, 13, 6, 19, 17, 17, 16, 1]])如果我想提取一个3x3网格,我将在中间值(这里,1)上居中,其结果是:
>>> a[3:6,3:6]
array([[12, 10, 7],
[15, 1, 1],
[ 6, 8, 3]])如果我想要一个以中间值(同样是1)为中心的5x5网格,来自这个较大的9x9网格:
>>> a[2:7,2:7]
array([[ 7, 1, 17, 17, 8],
[16, 12, 10, 7, 19],
[13, 15, 1, 1, 2],
[ 7, 6, 8, 3, 13],
[18, 2, 4, 6, 1]])问题是,如何编程地导出基于给定nxn大小的网格的值?换句话说,对于3x3网格,如何到达3:6,然后2:7到达5x5网格?我应该注意,nxn和mxm网格总是奇数,所以有一个实际的中心。
发布于 2022-03-02 23:28:36
这很可能适用于这样的事情:
def grid_func(a,required_size):
centre_index=a.shape[0]//2
start_index=centre_index-required_size//2
end_index=start_index + required_size
return a[start_index:end_index,start_index:end_index]https://stackoverflow.com/questions/71330312
复制相似问题