python 实现方阵的对角线遍历示例


Posted in Python onNovember 29, 2019

任务描述

对一个方阵矩阵,实现平行于主对角线方向的对角线元素遍历。

从矩阵索引入手:

[[ 1 2 3 4 5]
 [ 6 7 8 9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]

上三角的索引遍历:

0 0
1 1
2 2
3 3
4 4

0 1
1 2
2 3
3 4

0 2
1 3
2 4

0 3
1 4

0 4

下三角的索引遍历:

1 0
2 1
3 2
4 3

2 0
3 1
4 2

3 0
4 1

4 0

代码

import numpy as np

A = np.arange(25)+1
A = np.mat(A.reshape([5, 5]))
print(A)

"""
[[ 1 2 3 4 5]
 [ 6 7 8 9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]
"""

Num_element = A.shape[0]
c = int((Num_element-1)/2)
# print(c)


R = np.zeros_like(A)
# print(R)

for j in range(Num_element):
 print()
 i = 0
 # print(i, j)
 while np.max([i, j])<Num_element:
 print(i, j)
 if np.abs(i-j)%2==0:
 R[i, j] = A[c-int((j-i)/2), c+int((j-i)/2)]
 else:
 R[i, j] = (A[c-int((j-i-1)/2), c+int((j-i+1)/2)]+A[c-int((j-i+1)/2), c+int((j-i-1)/2)])/2

 i=i+1
 j=j+1

# print(R)

for k in range(1, Num_element):
 print()
 i = 0
 # print(i, j)
 while np.max([k, i])<Num_element:
 print(k, i)
 if np.abs(k-i)%2==0:
 R[k, i] = A[c-int((i-k)/2), c+int((i-k)/2)]
 else:
 R[k, i] = (A[c-int((i-k-1)/2), c+int((i-k+1)/2)]+A[c-int((i-k+1)/2), c+int((i-k-1)/2)])/2

 k=k+1
 i=i+1

print(R)

上述代码中对于每条对角线的所有元素执行相同的赋值操作。

考虑将其中重复的部分封装成函数:

def diag_opreation(k, i, Num_element, R, A):
 c = int((Num_element-1)/2)
 while np.max([k, i])<Num_element:
 print(k, i)
 if np.abs(k-i)%2==0:
 R[k, i] = A[c-int((i-k)/2), c+int((i-k)/2)]
 else:
 R[k, i] = (A[c-int((i-k-1)/2), c+int((i-k+1)/2)]+A[c-int((i-k+1)/2), c+int((i-k-1)/2)])/2
 
 k=k+1
 i=i+1
 return R

则代码变为:

for j in range(Num_element):
 print()
 i = 0
 # print(i, j)
 R = diag_opreation(i, j, Num_element, R, A)

# print(R)

for k in range(1, Num_element):
 print()
 i = 0
 # print(i, j)
 R = diag_opreation(k, i, Num_element, R, A)

print(R)

输出结果为:

[[13 11 9 7 5]
 [15 13 11 9 7]
 [17 15 13 11 9]
 [19 17 15 13 11]
 [21 19 17 15 13]]

以上这篇python 实现方阵的对角线遍历示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
儿童编程python入门
May 08 Python
python numpy 显示图像阵列的实例
Jul 02 Python
使用numba对Python运算加速的方法
Oct 15 Python
python读取图片任意范围区域
Jan 23 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 Python
python 实现一个反向单位矩阵示例
Nov 29 #Python
python 实现矩阵填充0的例子
Nov 29 #Python
python循环嵌套的多种使用方法解析
Nov 29 #Python
python写一个随机点名软件的实例
Nov 28 #Python
关于Python-faker的函数效果一览
Nov 28 #Python
python 监测内存和cpu的使用率实例
Nov 28 #Python
python随机生成库faker库api实例详解
Nov 28 #Python
You might like
PHP 读取和编写 XML
2014/11/19 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
php批量修改表结构实例
2017/05/24 PHP
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
如何使用angularJs
2017/05/08 Javascript
微信小程序上传图片到php服务器的方法
2019/05/23 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
焊接专业毕业生求职信
2013/10/01 职场文书
师范生实习自我鉴定
2013/11/01 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
法定代表人证明书
2014/11/28 职场文书
小学班主任个人总结
2015/03/03 职场文书
机器人总动员观后感
2015/06/09 职场文书
独生子女证明范本
2015/06/19 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
学习新党章心得体会2016
2016/01/15 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书