赞
踩
为了展现代码的效果,这里选取了一个3*3的数组,分别是0-8的值,便于区分。为了直观展示数据,这里使用了热力图用颜色区分数值大小。关于如何绘制,参见:https://blog.csdn.net/zzu_Flyer/article/details/109309082
原始矩阵如下:
import seaborn as sns import numpy as np import matplotlib.pyplot as plt # 显示中文字体 from pylab import * mpl.rcParams['font.sans-serif']=['SimHei'] # n数组维度 n = 3 my_array = np.zeros((n, n)) # 随机生成原始数组 s = 0 for i in np.arange(n): for j in np.arange(n): print(i, j) my_array[i, j] = s s = s + 1 print(my_array) # 沿主对角线数组翻转 def fanzhuan_zhu(wind_array, nx): for i in range(nx): # print('i', i) for j in range(i, nx - i): print('--',i, j) tmp = wind_array[i, j] wind_array[i, j] = wind_array[j, i] wind_array[j, i] = tmp j = j + 1 i = i + 1 return wind_array # 沿副对角线数组翻转 def fanzhuan_fu(wind_array, nx): for i in range(nx - 1): for j in range(nx - 1 - i): print(i, j) tmp = wind_array[i, j] wind_array[i, j] = wind_array[nx - j - 1, nx - i - 1] wind_array[nx - j - 1, nx - i - 1] = tmp j = j + 1 i = i + 1 return wind_array # 绘制热力图 def show(wind_array, title): # 绘制热力图 h = sns.heatmap( data=wind_array, # 指定绘图数据 cmap='YlGnBu', # 指定填充色'PuBuGn',,jet # center=1, linewidths=.1, # 设置每个单元格边框的宽度 annot=True, # 显示数值 cbar=True, fmt='.1f',# 以科学计算法显示数据 ) plt.title(title, fontsize=15) plt.tight_layout() # 显示图形 plt.show() show(my_array,'原始数组') zhu = fanzhuan_zhu(my_array, n) print('主对角线翻转',zhu) show(zhu, '主对角线翻转后') fu = fanzhuan_zhu(my_array, n) print('副对角线翻转', fu) show(fu, '副对角线翻转后')```
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。