python 實現(xiàn)方陣的對角線遍歷示例
任務(wù)描述
對一個方陣矩陣,實現(xiàn)平行于主對角線方向的對角線元素遍歷。
從矩陣索引入手:
[[ 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)
上述代碼中對于每條對角線的所有元素執(zhí)行相同的賦值操作。
考慮將其中重復(fù)的部分封裝成函數(shù):
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
則代碼變?yōu)椋?/strong>
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)
輸出結(jié)果為:
[[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 實現(xiàn)方陣的對角線遍歷示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python lambda 匿名函數(shù)優(yōu)點和局限性深度總結(jié)
這篇文章主要為大家介紹了Python lambda 匿名函數(shù)的優(yōu)點和局限性深度總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08詳解使用Python寫一個向數(shù)據(jù)庫填充數(shù)據(jù)的小工具(推薦)
這篇文章主要介紹了用Python寫一個向數(shù)據(jù)庫填充數(shù)據(jù)的小工具,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Python實現(xiàn)PDF轉(zhuǎn)Word的方法詳解
由于PDF的文件大多都是只讀文件,有時候為了滿足可以編輯的需要通??梢詫DF文件直接轉(zhuǎn)換成Word文件進行操作。本文為大家整理了一些實現(xiàn)方法,希望對大家有所幫助2023-02-02Python學(xué)習(xí)之內(nèi)置函數(shù)總結(jié)
這篇文章主要為大家總結(jié)一下python?中常用的是個內(nèi)置函數(shù)的使用方法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下2022-03-03初學(xué)python數(shù)學(xué)建模之數(shù)據(jù)導(dǎo)入(小白篇)
本篇文章是小白篇初學(xué)python的同學(xué)可以來共同學(xué)習(xí)了,本篇文章主要講解了python數(shù)學(xué)建模過程中的第一步數(shù)據(jù)導(dǎo)入,數(shù)據(jù)導(dǎo)入是所有數(shù)模編程的第一步,比你想象的更重要2021-08-08Python中subplots_adjust函數(shù)的用法
這篇文章主要介紹了Python中subplots_adjust函數(shù)的用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08