Python Numpy库中diag函数的使用
Python Numpy库中的diag函数可以从给定的一维数组或者矩阵提取出对角线元素,或者将一维数组或者矩阵转换为对角矩阵。
import numpy as np # 一维数组 a = np.array([1,2,3,4]) # 从一维数组提取对角线元素 print(np.diag(a)) # 输出:array([[1, 0, 0, 0], # [0, 2, 0, 0], # [0, 0, 3, 0], # [0, 0, 0, 4]]) # 二维数组 b = np.array([[1,2,3],[4,5,6],[7,8,9]]) # 从二维数组提取对角线元素 print(np.diag(b)) # 输出:array([1, 5, 9]) # 一维数组转换为对角矩阵 c = np.array([1,2,3,4]) # 一维数组转换为对角矩阵 print(np.diag(c)) # 输出:array([[1, 0, 0, 0], # [0, 2, 0, 0], # [0, 0, 3, 0], # [0, 0, 0, 4]])
diag函数有两个参数,v和k,v表示一维数组或者矩阵,k表示对角线的偏移量,默认为0,当k为正时,表示从主对角线右上角开始提取,当k为负时,表示从主对角线左下角开始提取。
# 一维数组 d = np.array([1,2,3,4,5,6,7,8]) # 从主对角线右上角开始提取 print(np.diag(d, k=1)) # 输出:array([0, 1, 0, 0, 0, 0, 0, 0], # [0, 0, 2, 0, 0, 0, 0, 0], # [0, 0, 0, 3, 0, 0, 0, 0], # [0, 0, 0, 0, 4, 0, 0, 0], # [0, 0, 0, 0, 0, 5, 0, 0], # [0, 0, 0, 0, 0, 0, 6, 0], # [0, 0, 0, 0, 0, 0, 0, 7], # [0, 0, 0, 0, 0, 0, 0, 0]) # 从主对角线左下角开始提取 print(np.diag(d, k=-1)) # 输出:array([0, 0, 0, 0, 0, 0, 0, 0], # [1, 0, 0, 0, 0, 0, 0, 0], # [0, 2, 0, 0, 0, 0, 0, 0], # [0, 0, 3, 0, 0, 0, 0, 0], # [0, 0, 0, 4, 0, 0, 0, 0], # [0, 0, 0, 0, 5, 0, 0, 0], # [0, 0, 0, 0, 0, 6, 0, 0], # [0, 0, 0, 0, 0, 0, 7, 0])
diag函数也可以用来将一维数组转换为对角矩阵,只需将k参数设置为0即可。
- diag函数可以从给定的一维数组或者矩阵提取出对角线元素。
- diag函数可以将一维数组或者矩阵转换为对角矩阵。
- diag函数有两个参数,v和k,v表示一维数组或者矩阵,k表示对角线的偏移量,默认为0。