gpt4 book ai didi

python - 构建二维金字塔数组 - Python/NumPy

转载 作者:太空狗 更新时间:2023-10-30 00:42:21 24 4
gpt4 key购买 nike

一段时间以来,我一直在绞尽脑汁想制作这个数组,但未能以矢量化方式成功完成。

我需要一个函数,它接受大小为 n 的二维数组并生成大小为 (n, n) 的二维数组,如下所示:

n = 6

np.array([[0,0,0,0,0,0],
[0,1,1,1,1,0],
[0,1,2,2,1,0],
[0,1,2,2,1,0],
[0,1,1,1,1,0],
[0,0,0,0,0,0],

(并且可以接受奇数参数)

如有任何建议,我们将不胜感激,谢谢!

最佳答案

方法 #1

我们可以使用broadcasting -

def pyramid(n):
r = np.arange(n)
d = np.minimum(r,r[::-1])
return np.minimum.outer(d,d)

方法 #2

我们也可以使用concatenation来创建d,像这样-

d = np.r_[np.arange(n//2),np.arange(n//2-(n%2==0),-1,-1)]

因此,给我们一个替代的单行 -

np.minimum.outer(*(2*[np.r_[np.arange(n//2),np.arange(n//2-(n%2==0),-1,-1)]]))

样本运行-

In [83]: pyramid(5)
Out[83]:
array([[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 1, 2, 1, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0]])

In [84]: pyramid(6)
Out[84]:
array([[0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 0],
[0, 1, 2, 2, 1, 0],
[0, 1, 2, 2, 1, 0],
[0, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0]])

In [85]: pyramid(8)
Out[85]:
array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 2, 2, 2, 2, 1, 0],
[0, 1, 2, 3, 3, 2, 1, 0],
[0, 1, 2, 3, 3, 2, 1, 0],
[0, 1, 2, 2, 2, 2, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])

关于python - 构建二维金字塔数组 - Python/NumPy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55647372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com