numpy如何取出對角線元素、計算對角線元素和np.diagonal
numpy取出對角線元素、計算對角線元素和np.diagonal
np.diagonal(a, offset=0, axis1=0, axis2=1)
直接上例子:
1、二維數(shù)組
二維數(shù)組,重點理解offset參數(shù)。offset默認0,即從位置為(0,0)的元素斜45°角指向的元素。
當offset=1時,對角線向上移動1個位置,offset=2,移動兩個位置,以此類推。
當offset取負值時,向下移動相應的位置數(shù)量。
見下:
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ù)組是正方的還是長方形的,offset偏移方法是一樣的。
2、三維數(shù)組
三維數(shù)組較復雜,重點是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) # 默認axis1 = 0,axis2 = 1 array([[9, 4], [5, 2], [2, 1], [7, 0]])
上一個圖:
默認是在axis = 0,axis = 1方向上取對角數(shù)據(jù),即如下是我們在這個方向上看到的第一個3x2二維數(shù)組,后面還有三個3x2二維數(shù)組,對角線元素就是這4個二維數(shù)組的對角元素:
在舉一個例子:
np.diagonal(arr,axis1=0, axis2=2) array([[9, 0], [7, 2], [5, 4]])
我們改在axis = 0,axis =2方向上取對角數(shù)據(jù),即如下是我們在這個方向上看到的第一個2x4二維數(shù)組,后面還有2個2x4二維數(shù)組,對角線元素就是這3個二維數(shù)組的對角元素:
選取兩個aixs可以認為是由這兩軸確定的平面來截取數(shù)組,將數(shù)組分成相應的二維數(shù)組。
從垂直于這個平面也就是另外一個軸來觀察數(shù)組,比如上面的例子,我們從事從軸1去看數(shù)組,取數(shù)。
生成對角矩陣 numpy.diag
給定對角線上元素,我想生成對角矩陣,在網(wǎng)上搜了一下,竟然都是numpy.diagonal。
這個函數(shù)的作用是提取給定矩陣的對角元素,當然不是我想要的。
后來發(fā)現(xiàn)numpy.diag才是生成對角矩陣的函數(shù),所以記錄下。
import numpy as np a=[1,2,3] np.diag(a) Out[4]:? array([[1, 0, 0], ? ? ? ?[0, 2, 0], ? ? ? ?[0, 0, 3]])
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python利用subplots_adjust方法解決圖表與畫布的間距問題
這篇文章主要介紹了如何在使用python?的?matplotlib庫繪圖時,?使用subplots_adjust()方法來調(diào)整圖表與畫布之間的間距,以及圖表與圖表之間的間距,感興趣的可以了解一下2022-04-04如何實現(xiàn)一個python函數(shù)裝飾器(Decorator)
這篇文章主要介紹了如何實現(xiàn)一個python函數(shù)裝飾器(Decorator),幫助大家更好的理解和學習python,感興趣的朋友可以了解下2020-10-10