numpy.diag
numpy.diag(v, k=0) [source]
提取对角线或构造对角线数组。
如果使用此函数提取对角线并希望写入结果数组,请参见numpy.diagonal
的更详细的文档。 返回的是副本还是视图取决于您使用的numpy版本。
参数 : | v :array_like 如果 则返回其第 如果 则返回一个二维数组, 其中 k : 对角线问题。 默认值为 对于主对角线上方的对角线, 请使用 对于主对角线下方的对角线, 请使用 |
返回值 : | out :ndarray 提取的对角线或构造对角线数组。 |
例子
1)从二维数组中提取对角线元素
import numpy as np # 创建一个二维数组 matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 提取主对角线元素 diagonal = np.diag(matrix) print("二维数组:") print(matrix) print("主对角线元素:") print(diagonal)
2)创建对角线数组
import numpy as np # 创建一个一维数组 diagonal_elements = np.array([1, 2, 3]) # 创建一个对角线数组 diagonal_matrix = np.diag(diagonal_elements) print("一维数组:") print(diagonal_elements) print("对角线数组:") print(diagonal_matrix)
3)提取其他对角线元素
可以通过设置 k
参数来提取相对于主对角线的其他对角线元素。k
为正值表示上对角线,负值表示下对角线。
import numpy as np # 创建一个二维数组 matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 提取上对角线(k=1) upper_diagonal = np.diag(matrix, k=1) # 提取下对角线(k=-1) lower_diagonal = np.diag(matrix, k=-1) print("二维数组:") print(matrix) print("上对角线元素 (k=1):") print(upper_diagonal) print("下对角线元素 (k=-1):") print(lower_diagonal)
4)使用示例
import numpy as np # 创建一个 3x3 的二维数组 x = np.arange(9).reshape((3, 3)) print("二维数组 x:") print(x) # 提取主对角线元素 main_diagonal = np.diag(x) print("主对角线元素:") print(main_diagonal) # 提取上对角线元素(k=1) upper_diagonal = np.diag(x, k=1) print("上对角线元素 (k=1):") print(upper_diagonal) # 提取下对角线元素(k=-1) lower_diagonal = np.diag(x, k=-1) print("下对角线元素 (k=-1):") print(lower_diagonal) # 创建一个只包含主对角线元素的对角线数组 diagonal_matrix = np.diag(np.diag(x)) print("由主对角线元素创建的对角线数组:") print(diagonal_matrix)