一、概述
在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/zh-tw/n/250811.html