Python 可以创建点源nxn阵列的内置函数或模块函数?

Python 可以创建点源nxn阵列的内置函数或模块函数?,python,numpy,Python,Numpy,只是想知道是否有一个函数可以生成一个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并得到一个像上面那样的数组,那就太好了,但我不太抱希望。我不认为这是一个内置的。但你可以建立一个: def get_center(size): a = n

只是想知道是否有一个函数可以生成一个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并得到一个像上面那样的数组,那就太好了,但我不太抱希望。

我不认为这是一个内置的。但你可以建立一个:

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

get_center(7)
输出:


不错!我认为这会更具可读性
np.flip(np.arange(size))
thoughtperfect!正是我想要的,谢谢。另一个解决方案是
np.fromfunction(lambda I,j:np.minimum.reduce([I,j,6-I,6-j]),(7,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]])