如何用简捷的方法制作矩阵(9*9)

2024-04-26 05:01:25 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我想知道如何使矩阵(9*9)的代码比这个短

a= np.ones((9,9),dtype=int)
a[1:8,1:8:]=0
a[2:7,2:7:]=1
a[3:6,3:6:]=0
a[4:5,4:5:]=1

[[1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 0, 0, 0, 0, 0, 0, 0, 1],
 [1, 0, 1, 1, 1, 1, 1, 0, 1],
 [1, 0, 1, 0, 0, 0, 1, 0, 1],
 [1, 0, 1, 0, 1, 0, 1, 0, 1],
 [1, 0, 1, 0, 0, 0, 1, 0, 1],
 [1, 0, 1, 1, 1, 1, 1, 0, 1],
 [1, 0, 0, 0, 0, 0, 0, 0, 1],
 [1, 1, 1, 1, 1, 1, 1, 1, 1]]

Tags: 代码npones矩阵intdtype
2条回答

可以使用循环:

n = 9
a = np.ones((n,n),dtype=int)
for i in range(0, n//2):
    a[i+1:n-1-i,i+1:n-1-i] = i % 2

我不推荐这种方法,但是笑一笑,这里有一种方法可以使用maximum norm的概念来实现

n = 9
x, y = np.meshgrid(range(-n//2+1, n//2+1), range(-n//2+1, n//2+1))
a = 1 - (np.max((np.abs(x), np.abs(y)), 0) % 2)

只对奇数值n有效

相关问题 更多 >