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 命令行参数sys.argv
Sep 06 Python
在Python的Django框架中simple-todo工具的简单使用
May 30 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
python如何为创建大量实例节省内存
Mar 20 Python
对python requests的content和text方法的区别详解
Oct 11 Python
Python面向对象之类和实例用法分析
Jun 08 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 Python
Python3压缩和解压缩实现代码
Mar 01 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
python实现局部图像放大
Nov 17 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
基于php权限分配的实现代码
2013/04/28 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
python使用pil生成图片验证码的方法
2015/05/08 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
斯福泰克软件测试面试题
2015/02/16 面试题
工作自我评价怎么写
2014/01/29 职场文书
采购部经理岗位职责
2014/02/10 职场文书
自强之星事迹材料
2014/05/12 职场文书
大学生学习计划书
2014/09/15 职场文书
大班上学期个人总结
2015/02/13 职场文书
个人培训总结
2015/03/05 职场文书