np.triu详解

发布时间:2023-05-20

一、概述

在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=0np.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中非常常用的一种矩阵操作函数,我们可以使用它来获取矩阵的上三角形部分。同时,该函数还有一些灵活的参数,可以对矩阵进行不同的截取处理。