numpy如何取出对角线元素、计算对角线元素和np.diagonal
numpy取出对角线元素、计算对角线元素和np.diagonal
np.diagonal(a, offset=0, axis1=0, axis2=1)
直接上例子:
1、二维数组
二维数组,重点理解offset参数。offset默认0,即从位置为(0,0)的元素斜45°角指向的元素。
当offset=1时,对角线向上移动1个位置,offset=2,移动两个位置,以此类推。
当offset取负值时,向下移动相应的位置数量。
见下:
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取值如下,不管数组是正方的还是长方形的,offset偏移方法是一样的。
2、三维数组
三维数组较复杂,重点是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方向上取对角数据,即如下是我们在这个方向上看到的第一个3x2二维数组,后面还有三个3x2二维数组,对角线元素就是这4个二维数组的对角元素:
在举一个例子:
np.diagonal(arr,axis1=0, axis2=2) array([[9, 0], [7, 2], [5, 4]])
我们改在axis = 0,axis =2方向上取对角数据,即如下是我们在这个方向上看到的第一个2x4二维数组,后面还有2个2x4二维数组,对角线元素就是这3个二维数组的对角元素:
选取两个aixs可以认为是由这两轴确定的平面来截取数组,将数组分成相应的二维数组。
从垂直于这个平面也就是另外一个轴来观察数组,比如上面的例子,我们从事从轴1去看数组,取数。
生成对角矩阵 numpy.diag
给定对角线上元素,我想生成对角矩阵,在网上搜了一下,竟然都是numpy.diagonal。
这个函数的作用是提取给定矩阵的对角元素,当然不是我想要的。
后来发现numpy.diag才是生成对角矩阵的函数,所以记录下。
import numpy as np a=[1,2,3] np.diag(a) Out[4]: array([[1, 0, 0], [0, 2, 0], [0, 0, 3]])
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
django2用iframe标签完成网页内嵌播放b站视频功能
这篇文章主要介绍了django2 用iframe标签完成 网页内嵌播放b站视频功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-06-06python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
这篇文章主要介绍了python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择,需要的朋友可以参考下2020-02-02
最新评论