一、介绍
NumPy是一个开源的Python科学计算库,它支持高维数组和矩阵运算。np.diag是NumPy中的一个函数,可以用来创建对角矩阵、获取对角线元素、构建对角线数组等。
二、np.diag的基本用法
np.diag的基本用法可以分为两种情况:
1、创建对角矩阵。对于给定的一维数组,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]]
2、获取对角线元素。对于给定的二维数组,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不仅用于创建普通的对角矩阵,还可以创建不同种类的对角矩阵:
1、创建反对角矩阵。反对角矩阵是对角线上元素相等,其他元素均为零的矩阵。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]
2、创建单位矩阵。单位矩阵是对角线上元素均为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还有一些其他的用法:
1、将一维数组转换为二维对角矩阵。如果输入参数是一维数组,np.diag会返回一个与该数组对应的二维对角矩阵。
print(np.diag([1, 2, 3]))
输出结果为:
[[1 0 0] [0 2 0] [0 0 3]]
2、将二维数组的对角线元素替换为给定的一维数组。如果第二个参数是一个一维数组,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中进行更加高效和方便的矩阵操作。
原创文章,作者:XZOXI,如若转载,请注明出处:https://www.506064.com/n/372838.html