我正在進行概率計算,我可以為一個小矩陣運行我的代碼;
P_4 = np.array([
[0 ,1 ,0 , 0, 0],
[0 ,1/4,3/4, 0, 0],
[0 ,0 ,2/4,2/4, 0],
[0 ,0 ,0 ,3/4,1/4],
[0 ,0 ,0 , 0,1 ],
])
但是,我想創建一個 N*N 矩陣并填充對角線上的值 0/n 和下一個值 1 - 0/n。
n = 5
a = np.zeros((n,n),dtype = int)
np.fill_diagonal(a,np.array([range(1/n)]))
a
寫上面的代碼給我錯誤
TypeError: 'float' object cannot be interpreted as an integer
我將不勝感激任何建議。
uj5u.com熱心網友回復:
linspace這是使用和的一個選項diag。
n = 5
diag = np.linspace(0, 1, n)
diag1 = (1 - diag[:-1])
a = np.diag(diag) np.diag(diag1, 1)
a
輸出:
array([[0. , 1. , 0. , 0. , 0. ],
[0. , 0.25, 0.75, 0. , 0. ],
[0. , 0. , 0.5 , 0.5 , 0. ],
[0. , 0. , 0. , 0.75, 0.25],
[0. , 0. , 0. , 0. , 1. ]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/534911.html
標籤:Python麻木的
上一篇:Numpy-如何獲得一些0-t的模式gamma^t陣列?
下一篇:按列排序矩陣
