一、介绍
NumPy是一个开源的Python科学计算库,它支持高维数组和矩阵运算。np.diag
是NumPy中的一个函数,可以用来创建对角矩阵、获取对角线元素、构建对角线数组等。
二、np.diag
的基本用法
np.diag
的基本用法可以分为两种情况:
- 创建对角矩阵。对于给定的一维数组,
np.diag
返回一个由该数组表示的对角矩阵,其他元素均为零。
import numpy as np
arr = np.array([1, 2, 3])
print(np.diag(arr))
输出结果为:
[[1 0 0]
[0 2 0]
[0 0 3]]
- 获取对角线元素。对于给定的二维数组,
np.diag
返回一个以该数组的对角线为元素的一维数组。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.diag(arr))
输出结果为:
[1 5 9]
三、np.diag
创建不同种类的对角矩阵
np.diag
不仅用于创建普通的对角矩阵,还可以创建不同种类的对角矩阵:
- 创建反对角矩阵。反对角矩阵是对角线上元素相等,其他元素均为零的矩阵。
np.diag
的第二个参数k
可以用来控制对角线的位置,k>0
表示对角线向右偏移k
个位置,k<0
表示对角线向左偏移-k
个位置,k=0
表示对角线在左上角。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.diag(arr, k=2))
输出结果为:
[0 0 1 0 0 0 0 0 0]
- 创建单位矩阵。单位矩阵是对角线上元素均为1,其他元素均为零的矩阵。
print(np.diag(np.ones(5)))
输出结果为:
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
四、np.diag
的其他用法
np.diag
还有一些其他的用法:
- 将一维数组转换为二维对角矩阵。如果输入参数是一维数组,
np.diag
会返回一个与该数组对应的二维对角矩阵。
print(np.diag([1, 2, 3]))
输出结果为:
[[1 0 0]
[0 2 0]
[0 0 3]]
- 将二维数组的对角线元素替换为给定的一维数组。如果第二个参数是一个一维数组,
np.diag
会将该数组的元素替换二维数组的对角线元素。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.diag(np.array([10, 11, 12]), k=1))
输出结果为:
[[ 0 10 0 0 0]
[ 0 0 11 0 0]
[ 0 0 0 12 0]
[ 0 0 0 0 0]
[ 0 0 0 0 0]]
五、总结
np.diag
是NumPy中非常实用的函数,可以用来创建对角矩阵、获取对角线元素、构建对角线数组等。本文介绍了np.diag
的基本用法,以及如何创建不同种类的对角矩阵和其他用法。掌握np.diag
的各种用法可以在NumPy中进行更加高效和方便的矩阵操作。