时间:2021-05-22
任务描述
对一个方阵矩阵,实现平行于主对角线方向的对角线元素遍历。
从矩阵索引入手:
[[ 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 01 12 23 34 40 11 22 33 40 21 32 40 31 40 4下三角的索引遍历:
1 02 13 24 32 03 14 23 04 14 0代码
import numpy as npA = np.arange(25)+1A = 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+1print(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 实现方阵的对角线遍历示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
魔方阵说明:魔方阵是一个N*N的矩阵;该矩阵每一行,每一列,对角线之和都相等;魔方阵示例:三阶魔方阵:816357492每一行之和:8+1+6=15;3+5+7
本文实例讲述了python计算对角线有理函数插值的方法。分享给大家供大家参考。具体实现方法如下:'''p=rational(xData,yData,x)Eval
本文实例为大家分享了python实现二维数组的对角线遍历,供大家参考,具体内容如下第一种情况:从左上角出发,右下角结束要完成的事情,就像下图:话不多说,直接上P
反向单位矩阵单位矩阵即对角线为1,如下:​那么反向的单位矩阵就是反对角线为1:​左右镜像操作这里采用numpy实现。方案1importn
Pytorch的线性函数主要封装了Blas和Lapack,其用法和接口都与之类似。常用的线性函数如下:函数功能trace对角线元素之和(矩阵的迹)diag对角线