使用python怎么遍历方阵的对角线

  介绍

这期内容当中小编将会给大家带来有关使用python怎么遍历方阵的对角线,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>任务描述

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

<强>从矩阵索引入手:

[[, 1, 2, 3, 4, 5]   ,(6,7,8,9,10)   ,(十一,十二,十三,十四,十五)   ,[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 ()      “““   [[,1,2,3,4,5]   ,(6,7,8,9,10)   ,(十一,十二,十三,十四,十五)   ,[16,17,18,19,20)   ,(21日,22日,23日,24日,25日]]   “““      时间=Num_element  A.shape [0]   c =, int ((Num_element-1)/2)   #,打印(c)         时间=R  np.zeros_like (A)   #,打印(右)      for  j 拷贝范围(Num_element):   ,print ()   ,小姐:=0   ,#打印(i, j)   ,while  np.max ((i, j)) & lt; Num_element:   ,打印(i, j)   ,if  np.abs (i j) % 2==0:   ,R (i, j),=, (c-int ((j-i)/2), c + int ((j-i)/2)]   ,其他的:   ,R (i, j),=, ([c-int ((j-i-1)/2), c + int ((j-i + 1)/2)] + [c-int ((j-i + 1)/2), c + int ((j-i-1)/2)])/2      我=+ 1   j=+ 1      #,打印(右)      for  k 拷贝范围(1,Num_element):   ,print ()   ,小姐:=0   ,#打印(i, j)   ,while  np.max ([k,我])& lt; Num_element:   ,打印(k,我)   ,if  np.abs (k-i) % 2==0:   (k,我),R,=, (c-int ((i (k)/2), c + int ((i (k)/2)]   ,其他的:   (k,我),R,=, ([c-int ((i-k-1)/2), c + int ((i (k + 1)/2)] + [c-int ((i (k + 1)/2), c + int ((i-k-1)/2)])/2      k=k + 1   我=+ 1      打印(R)

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

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

def  diag_opreation (Num_element, k,,我,,,,):=,int, c  ((Num_element-1)/2)   ,while  np.max ([k,我])& lt; Num_element:   ,打印(k,我)   ,if  np.abs (k-i) % 2==0:   (k,我),R,=, (c-int ((i (k)/2), c + int ((i (k)/2)]   ,其他的:   (k,我),R,=, ([c-int ((i-k-1)/2), c + int ((i (k + 1)/2)] + [c-int ((i (k + 1)/2), c + int ((i-k-1)/2)])/2   ,   k=k + 1   我=+ 1   以前,return  R

<强>则代码变为:

for  j 拷贝范围(Num_element):   ,print ()   ,小姐:=0   ,#打印(i, j)=,,R  diag_opreation (i, j, Num_element,, R,,)      #,打印(右)      for  k 拷贝范围(1,Num_element):   ,print ()   ,小姐:=0   ,#打印(i, j)=,,R  diag_opreation (k,,我,,Num_element,,,,)      打印(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怎么遍历方阵的对角线