2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為你必須檢查data.corr(),因?yàn)槟愕拇a是正確的,并給出了診斷(見下文)。一個(gè)問題是:您使用np.triu但您顯示的圖片顯示 np.tirl。
這是我測試過的代碼 - 對角線在那里:
N = 5
A = np.arange(N*N).reshape(N,N)
B = np.tril(A)
mask =np.zeros_like(A)
mask[np.triu_indices_from(mask)] = True
print('A'); print(A); print()
print('tril(A)'); print(B); print()
print('mask'); print(mask); print()
給
A
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
tril(A)
[[ 0 0 0 0 0]
[ 5 6 0 0 0]
[10 11 12 0 0]
[15 16 17 18 0]
[20 21 22 23 24]]
mask
[[1 1 1 1 1]
[0 1 1 1 1]
[0 0 1 1 1]
[0 0 0 1 1]
[0 0 0 0 1]]
編輯:補(bǔ)充
你可以重新調(diào)整面具,例如
C = A *mask
D = np.where(C > 1, 1,C)
print('D'); print(D)
給
D
[[0 1 1 1 1]
[0 1 1 1 1]
[0 0 1 1 1]
[0 0 0 1 1]
[0 0 0 0 1]]
D 的對角線的第一個(gè)元素現(xiàn)在是零,因?yàn)?A 的對角線的第一個(gè)元素也是零。
編輯:補(bǔ)充2
F = np.tril(A,-1)
E = np.eye(N)
G = E + F
print('F'); print(F); print()
print('E'); print(E); print()
print('G'); print(G); print()
給
F
[[ 0 0 0 0 0]
[ 5 0 0 0 0]
[10 11 0 0 0]
[15 16 17 0 0]
[20 21 22 23 0]]
E
[[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.]]
G
[[ 1. 0. 0. 0. 0.]
[ 5. 1. 0. 0. 0.]
[10. 11. 1. 0. 0.]
[15. 16. 17. 1. 0.]
[20. 21. 22. 23. 1.]]
添加回答
舉報(bào)