一、概述
在NumPy中,我们经常会使用np.triu函数来获取矩阵的上三角形部分。该函数的作用是返回一个数组的上三角形部分:
import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(np.triu(a))
输出结果为:
array([[1, 2, 3], [0, 5, 6], [0, 0, 9]])
上三角形部分指的是矩阵中右上角的所有元素,包括对角线上的元素。
二、函数参数
np.triu函数最常用的参数为数组和k值,其中k值是一个整数型参数,用于指定矩阵上三角阵的对角线偏移量。对于k=0, np.triu返回矩阵的上三角形部分。对于k>0, 矩阵的对角线下面的k个元素会被保留;对于k<0, 对角线上面的|k|个元素会被保留。
import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(np.triu(a, k=1))
输出结果为:
array([[0, 2, 3], [0, 0, 6], [0, 0, 0]])
我们指定k=1,即对角线下面的1个元素不会被保留。
三、应用实例
例1:构建方阵
使用np.triu构建一个3×3的方阵:
import numpy as np a = np.array([1,2,3]) print(np.triu(np.tile(a, (3,1))))
输出结果为:
array([[1, 2, 3], [0, 2, 3], [0, 0, 3]])
这里我们使用np.tile()函数来将a向量平铺成3×3的矩阵,再使用np.triu函数获取其上三角部分。
例2:斐波那契矩阵
使用np.triu构建一个5×5的斐波那契矩阵:
import numpy as np a = np.array([1,1,2,3,5]) b = np.triu(np.tile(a, (5,1))) print(b.T+b)
输出结果为:
array([[ 2, 3, 4, 6, 11], [ 0, 2, 3, 5, 10], [ 0, 0, 4, 7, 12], [ 0, 0, 0, 6, 11], [ 0, 0, 0, 0, 10]])
该矩阵中每个元素都等于其所在行和所在列的斐波那契数之和。
四、总结
np.triu函数是NumPy中非常常用的一种矩阵操作函数,我们可以使用它来获取矩阵的上三角形部分。同时,该函数还有一些灵活的参数,可以对矩阵进行不同的截取处理。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/250811.html