Python对二维数组(矩阵)沿主对角线(次对角线)翻转变换代码实现
1. 原始数据以及图示
为了展现代码的效果,这里选取了一个3*3的数组,分别是0-8的值,便于区分。为了直观展示数据,这里使用了热力图用颜色区分数值大小。关于如何绘制,参见:https://blog.csdn.net/zzu_Flyer/article/details/109309082
原始矩阵如下:
2. 主对角线翻转及图示
3. 次对角线(副对角线)翻转结果
4. 完整代码,如有疑问,欢迎评论区交流
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, '副对角线翻转后')```