Python算法:【螺旋】矩阵

如题

实现一个函数,输入正整数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

这里写图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值