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 相关文章推荐
python实现bucket排序算法实例分析
May 04 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
Django中login_required装饰器的深入介绍
Nov 24 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
python实现的发邮件功能示例
Sep 11 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
Jan 10 Python
python实现猜数游戏
Mar 27 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 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 冒泡排序算法的实现代码
2010/08/08 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
Laravel 5 学习笔记
2015/03/06 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
python实现泊松图像融合
2018/07/26 Python
python实现学员管理系统
2019/02/26 Python
Python2与Python3的区别实例总结
2019/04/17 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
几款好用的python工具库(小结)
2020/10/20 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
个人存款证明书
2014/10/18 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python