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字符串处理函数简明总结
Apr 13 Python
Python中turtle作图示例
Nov 15 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
windows下python安装pip方法详解
Feb 10 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
python的reverse函数翻转结果为None的问题
May 11 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
Python 必须了解的5种高级特征
Sep 10 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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
在JavaScript中调用php程序
2009/03/09 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
PHP强制转化的形式整理
2020/05/22 PHP
JavaScript 大数据相加的问题
2011/08/03 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
nodeJS微信分享
2017/12/20 NodeJs
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
python3中eval函数用法使用简介
2019/08/02 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
python实现从ftp服务器下载文件
2020/03/03 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
本科毕业生求职信
2014/06/15 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
如何写好竞聘报告
2019/04/03 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
Python如何让字典保持有序排列
2022/04/29 Python
spring boot实现文件上传
2022/08/14 Java/Android