Numpy diagonal() 函数
Numpy diagonal() 函数用于从二维数组或矩阵中提取指定的对角线。它还可用于设置或修改数组的对角线。此函数在处理方阵或访问或更新数组的对角线元素时非常有用。此函数在将一维数组作为参数传递时,会导致 ValueError 错误。
在 Numpy 中,diagonal() 函数可以从二维或更高维数组中提取对角线,并带有偏移量和轴的选项;而 diag() 函数可以从一维数组创建对角矩阵,或从二维数组中提取对角线,支持对角线的提取和构造。
语法
以下是 Numpy diagonal() 函数的语法 -
numpy.diagonal(a, offset=0, axis1=0, axis2=1)
参数
以下是Numpy diagonal() 函数 −
- a:输入数组(二维数组或矩阵)。
- offset(可选):对角线偏移量。正值表示将对角线移至主对角线上方,负值表示将对角线移至主对角线下方。默认值为 0,表示主对角线。
- axis1、axis2(可选):定义数组中二维平面的轴,将从中提取对角线。默认情况下,axis1=0,axis2=1。
返回类型
此函数返回一个包含矩阵对角线元素的一维数组。
示例
以下是使用 Numpy diagonal() 函数提取矩阵主对角线元素的基本示例 -
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) result = np.diagonal(matrix) print("主对角线:", result)
输出
以下是上述代码的输出 -
主对角线:[1 5 9]
示例:使用偏移提取对角线
diagonal() 函数中的 offset 参数允许我们提取主对角线上方或下方的对角线。正值表示对角线上移(位于主对角线上方),负值表示对角线上移(位于主对角线下方)。这里,我们提取了主对角线正上方的元素 -
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) result = np.diagonal(matrix, offset=1) print("主对角线正上方的对角线:", result)
输出
以下是上述代码的输出 -
主对角线正上方的对角线:[2 6]
示例:具有不同轴的对角线元素
我们可以指定不同的轴来提取对角线非方阵。在以下示例中,我们使用轴 0 和 1 提取对角线元素 -
import numpy as np matrix = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) print("原始矩阵: ",matrix) print("矩阵形状:",matrix.shape) result = np.diagonal(matrix,axis1=0, axis2=1) print("轴为 (0, 1) 的对角线: ", result)
输出
以下是上述代码的输出 -
原始矩阵: [[1 2] [3 4] [5 6] [7 8]] 矩阵形状:(4, 2) 轴为 (0, 1) 的对角线: [1 4]