首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(Python)从较大的mxm网格中提取居中的nxn网格

(Python)从较大的mxm网格中提取居中的nxn网格
EN

Stack Overflow用户
提问于 2022-03-02 23:16:00
回答 1查看 36关注 0票数 0

对于Python,有很多关于从更大的网格中提取每一个可能的nxn网格的帖子,但是如果我只想从整个mxm网格中提取居中的nxn网格,我就会绕圈运行来解决这个问题。

例如:

代码语言:javascript
运行
复制
>>> 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)上居中,其结果是:

代码语言:javascript
运行
复制
>>> a[3:6,3:6]
array([[12, 10,  7],
       [15,  1,  1],
       [ 6,  8,  3]])

如果我想要一个以中间值(同样是1)为中心的5x5网格,来自这个较大的9x9网格:

代码语言:javascript
运行
复制
>>> 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网格总是奇数,所以有一个实际的中心。

EN

回答 1

Stack Overflow用户

发布于 2022-03-02 23:28:36

这很可能适用于这样的事情:

代码语言:javascript
运行
复制
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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71330312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档