numpy如何取出對(duì)角線元素、計(jì)算對(duì)角線元素和np.diagonal
numpy取出對(duì)角線元素、計(jì)算對(duì)角線元素和np.diagonal
np.diagonal(a, offset=0, axis1=0, axis2=1)
直接上例子:
1、二維數(shù)組
二維數(shù)組,重點(diǎn)理解offset參數(shù)。offset默認(rèn)0,即從位置為(0,0)的元素斜45°角指向的元素。
當(dāng)offset=1時(shí),對(duì)角線向上移動(dòng)1個(gè)位置,offset=2,移動(dòng)兩個(gè)位置,以此類推。
當(dāng)offset取負(fù)值時(shí),向下移動(dòng)相應(yīng)的位置數(shù)量。
見(jiàn)下:
arr =np.arange(9).reshape(3,3) arr array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) ------------------------------------ np.diagonal(arr) array([0, 4, 8]) ------------------------------------ np.diagonal(arr,offset=1) array([1, 5]) ------------------------------------ np.diagonal(arr,offset=2) array([2])
offset取值如下,不管數(shù)組是正方的還是長(zhǎng)方形的,offset偏移方法是一樣的。
2、三維數(shù)組
三維數(shù)組較復(fù)雜,重點(diǎn)是axis1和axis2的理解。
先看例子:
arr = np.array([[[ 9, 5, 2, 7], [ 7, 2, 5, 9], [ 5, 2, 9, 7]], [[1, 0, 2, 4], [4, 2, 1, 0], [0, 4, 2, 2]]]) -------------------------------- np.diagonal(arr) # 默認(rèn)axis1 = 0,axis2 = 1 array([[9, 4], [5, 2], [2, 1], [7, 0]])
上一個(gè)圖:
默認(rèn)是在axis = 0,axis = 1方向上取對(duì)角數(shù)據(jù),即如下是我們?cè)谶@個(gè)方向上看到的第一個(gè)3x2二維數(shù)組,后面還有三個(gè)3x2二維數(shù)組,對(duì)角線元素就是這4個(gè)二維數(shù)組的對(duì)角元素:
在舉一個(gè)例子:
np.diagonal(arr,axis1=0, axis2=2) array([[9, 0], [7, 2], [5, 4]])
我們改在axis = 0,axis =2方向上取對(duì)角數(shù)據(jù),即如下是我們?cè)谶@個(gè)方向上看到的第一個(gè)2x4二維數(shù)組,后面還有2個(gè)2x4二維數(shù)組,對(duì)角線元素就是這3個(gè)二維數(shù)組的對(duì)角元素:
選取兩個(gè)aixs可以認(rèn)為是由這兩軸確定的平面來(lái)截取數(shù)組,將數(shù)組分成相應(yīng)的二維數(shù)組。
從垂直于這個(gè)平面也就是另外一個(gè)軸來(lái)觀察數(shù)組,比如上面的例子,我們從事從軸1去看數(shù)組,取數(shù)。
生成對(duì)角矩陣 numpy.diag
給定對(duì)角線上元素,我想生成對(duì)角矩陣,在網(wǎng)上搜了一下,竟然都是numpy.diagonal。
這個(gè)函數(shù)的作用是提取給定矩陣的對(duì)角元素,當(dāng)然不是我想要的。
后來(lái)發(fā)現(xiàn)numpy.diag才是生成對(duì)角矩陣的函數(shù),所以記錄下。
import numpy as np a=[1,2,3] np.diag(a) Out[4]:? array([[1, 0, 0], ? ? ? ?[0, 2, 0], ? ? ? ?[0, 0, 3]])
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談關(guān)于Python3中venv虛擬環(huán)境
這篇文章主要介紹了淺談關(guān)于Python3中venv虛擬環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Django基于Token的驗(yàn)證使用的實(shí)現(xiàn)
本文主要介紹了Django基于Token的驗(yàn)證使用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Python利用subplots_adjust方法解決圖表與畫布的間距問(wèn)題
這篇文章主要介紹了如何在使用python?的?matplotlib庫(kù)繪圖時(shí),?使用subplots_adjust()方法來(lái)調(diào)整圖表與畫布之間的間距,以及圖表與圖表之間的間距,感興趣的可以了解一下2022-04-04如何實(shí)現(xiàn)一個(gè)python函數(shù)裝飾器(Decorator)
這篇文章主要介紹了如何實(shí)現(xiàn)一個(gè)python函數(shù)裝飾器(Decorator),幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-10-10