如题
实现一个函数,输入正整数n(n=4),输出如下矩阵: [ 10, 11, 12, 1 ] [ 9 , 16, 13, 2 ] [ 8 , 15, 14, 3 ] [ 7 , 6 , 5 , 4 ]
算法实现
import numpy as np
def whirlpool_matrix(n=10):
mat = np.array([[0]*n]*n)
value = 0
i, j = -1, n - 1
for offset in range(n, 0, -1):
value += 1
i += 1
mat[i][j] = value
for m in range(n - 1, 0, -1):
for offset in range(m, 0, -1):
value += 1
j += (-1) ** (m + n)
mat[i][j] = value
for offset in range(m, 0, -1):
value += 1
i += (-1) ** (m + n)
mat[i][j] = value
return mat
结果展示1:热力图
matrix = whirlpool_matrix()
# 可视化
from seaborn import heatmap
from matplotlib import pyplot
heatmap(matrix, center=100, fmt='d', annot=True)
pyplot.show()
结果展示2:等高线图
# 创建数据
import numpy as np
n = 9
a = np.linspace(0, n, n)
x, y = np.meshgrid(a, a)
matrix = whirlpool_matrix(n)
# 可视化
import matplotlib.pyplot as mp
cntr = mp.contour(x, y, matrix, colors='black') # 绘制等高线
mp.contourf(x, y, matrix, cmap='jet') # 填充颜色
mp.clabel(cntr, fmt='%.1f') # 显示各等高线的数据标签
mp.colorbar() # 颜色条
mp.show() # 展示窗口
结果展示3:三维曲面图
# 创建数据
import numpy as np
n = 9
a = np.linspace(0, n, n)
x, y = np.meshgrid(a, a)
matrix = whirlpool_matrix(n)
# 可视化
import matplotlib.pyplot as mp
from mpl_toolkits import mplot3d
fig = mp.figure('3D') # 创建figure对象
ax = mplot3d.Axes3D(fig) # 获取3维坐标轴
ax.plot_surface(x, y, matrix, rstride=1, cstride=1, cmap='jet') # 绘制3d图
mp.show() # 展示窗口
设置n=20
设置n=100