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去看数组,取数。
更多推荐
已为社区贡献2条内容
所有评论(0)