3 回答

TA貢獻(xiàn)1863條經(jīng)驗 獲得超2個贊
您可以翻轉(zhuǎn)數(shù)組,獲取上三角形,然后將其翻轉(zhuǎn)回來:
In [1]: import numpy as np
In [2]: a = np.array([[1,2,3],[4,5,6],[7,8,9]])
In [3]: np.triu(a[:, ::-1])[:, ::-1]
Out[3]:
array([[1, 2, 3],
[4, 5, 0],
[7, 0, 0]])

TA貢獻(xiàn)1829條經(jīng)驗 獲得超13個贊
兩個問題。首先,np.tril(如其名稱所示)給出了下對角線。其次,三角形陣列通常是您所需輸出的鏡像。
我們可以在偷看源代碼為np.triu適應(yīng)其新triu_anti通過的功能np.fliplr:
def triu_anti(m, k=0):
m = np.asanyarray(m)
mask = np.fliplr(np.tri(*m.shape[-2:], k=k-1, dtype=bool))
return np.where(mask, np.zeros(1, m.dtype), m)
res = triu_anti([[1,2,3],[4,5,6],[7,8,9]])
print(res)
# array([[1, 2, 3],
# [4, 5, 0],
# [7, 0, 0]])
添加回答
舉報