输入一个正奇数N,创建一个N*N的矩阵满足:
1. 矩阵中心的元素为N,其外层被N-1包围;
2. N-1的外层被N-2包围;
3. 依次循环,直到形成一个N*N的矩阵。
很容易可以计算得出,矩阵元素从内到外递减,最外层的元素为(N+1)/2.
我们可以使用numpy从外向内地填充矩阵;首先生成一个N*N的值为(N+1)/2的矩阵;再用一个(N-2)*(N-2)的值为(N+1)/2+1的矩阵覆盖其中心;再用一个(N-4)*(N-4)的值为(N+1)/2+2的矩阵覆盖其中心.......依次循环,直到将中心元素赋值为N,终止循环,输出矩阵。
def matrixcreation(N):
M=np.ones((N,N))
for i in range(0,int((N+1)/2)):
#从外到内填充
M[i:N-i,i:N-i]=(N+1)/2+i
return M
M[i:N-i,i:N-i]:矩阵切片