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去看数组,取数。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值