numpy如何取出對角線元素、計算對角線元素和np.diagonal
numpy取出對角線元素、計算對角線元素和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時,對角線向上移動1個位置,offset=2,移動兩個位置,以此類推。
當(dāng)offset取負(fù)值時,向下移動相應(yīng)的位置數(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ù)組較復(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]])上一個圖:

默認(rèn)是在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可以認(rèn)為是由這兩軸確定的平面來截取數(shù)組,將數(shù)組分成相應(yīng)的二維數(shù)組。
從垂直于這個平面也就是另外一個軸來觀察數(shù)組,比如上面的例子,我們從事從軸1去看數(shù)組,取數(shù)。
生成對角矩陣 numpy.diag
給定對角線上元素,我想生成對角矩陣,在網(wǎng)上搜了一下,竟然都是numpy.diagonal。
這個函數(shù)的作用是提取給定矩陣的對角元素,當(dāng)然不是我想要的。
后來發(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]])
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)多線程暴力破解登陸路由器功能代碼分享
這篇文章主要介紹了python實(shí)現(xiàn)多線程暴力破解登陸路由器功能代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-01-01
解決mnist數(shù)據(jù)集下載的相關(guān)問題
這篇文章主要介紹了解決mnist數(shù)據(jù)集下載的相關(guān)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Python selenium如何打包靜態(tài)網(wǎng)頁并下載
這篇文章主要介紹了Python selenium如何打包靜態(tài)網(wǎng)頁并下載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
python使用mysqldb連接數(shù)據(jù)庫操作方法示例詳解
這篇文章主要介紹了python mysqldb使用方法,大家參考使用2013-12-12
Python3 pickle對象串行化代碼實(shí)例解析
這篇文章主要介紹了Python3 pickle對象串行化代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
python讀取word 中指定位置的表格及表格數(shù)據(jù)
這篇文章主要介紹了python讀取word 中指定位置的表格及表格數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧2019-10-10
在Pycharm中項(xiàng)目解釋器與環(huán)境變量的設(shè)置方法
今天小編就為大家分享一篇在Pycharm中項(xiàng)目解釋器與環(huán)境變量的設(shè)置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
如何使用python轉(zhuǎn)移mysql數(shù)據(jù)庫中的全部數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了如何使用python轉(zhuǎn)移mysql數(shù)據(jù)庫中的全部數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下2024-11-11

