首页 > 解决方案 > 在可以创建点源nxn数组的内置函数或模块函数中?

问题描述

只是想知道是否有一个函数可以生成一个 nxn 数组,其中中心具有最大值,边缘的值为 0,如下所示:

0 0 0 0 0 0 0
0 1 1 1 1 1 0
0 1 2 2 2 1 0
0 1 2 3 2 1 0
0 1 2 2 2 1 0
0 1 1 1 1 1 0
0 0 0 0 0 0 0

如果有类似于 np.arange 的东西会很好,我可以插入 n 并获得一个像上面那样的数组,但我不太有希望。

标签: pythonnumpy

解决方案


我认为没有内置的。但是您可以构建一个:

def get_center(size):
    a = np.minimum(np.arange(size), size - 1 - np.arange(size))
    return np.minimum(a, a[:,None])

get_center(7)

出去:

array([[0, 0, 0, 0, 0, 0, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 1, 2, 2, 2, 1, 0],
       [0, 1, 2, 3, 2, 1, 0],
       [0, 1, 2, 2, 2, 1, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 0, 0, 0, 0, 0, 0]])

推荐阅读