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 安装setuptools和pip工具操作方法(必看)
May 22 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
详解tensorflow训练自己的数据集实现CNN图像分类
Feb 07 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 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
在laravel框架中使用model层的方法
2019/10/08 PHP
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
vue生命周期的探索
2019/04/03 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
Python中几种导入模块的方式总结
2017/04/27 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
python 检查文件mime类型的方法
2018/12/08 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
新闻专业推荐信范文
2013/11/20 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
大学四年个人自我小结
2014/03/05 职场文书
社区戒毒工作方案
2014/06/04 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
送达通知书
2015/04/25 职场文书
给朋友的赠语
2015/06/23 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript