我試圖用這樣的模式制作一個 nxn 矩陣: 矩陣
如果給定 n,它將以 nxn 矩陣作為輸出。例如,如果 n = 5,則預期輸出將是:
[[ 1 0 0 0 0]
[-1 1 0 0 0]
[ 0 -1 1 0 0]
[ 0 0 -1 1 0]
[ 0 0 0 -1 1]]
任何人都可以幫助我設計用于以相同的模式生成矩陣的演算法,其中 n 作為輸入?感謝您的幫助
uj5u.com熱心網友回復:
您可以使用以下代碼獲取矩陣:
import numpy as np
n = 5
M = np.eye(n)
M[1:, :-1] -= np.eye(n-1)
print(M)
uj5u.com熱心網友回復:
以下代碼將解決您的問題:)
def mat_fn(n, k=-1, coef=-1):
mat = np.eye(n, n) np.eye(n, n, k) * coef
return mat
輸入:
mat_fn(5, -1, -1)
輸出:
[[ 1., 0., 0., 0., 0.],
[-1., 1., 0., 0., 0.],
[ 0., -1., 1., 0., 0.],
[ 0., 0., -1., 1., 0.],
[ 0., 0., 0., -1., 1.]]
如果你想要一個不同的矩陣,你可以改變 k 或 coef 引數
輸入:
mat_fn(5, -2, -2)
輸出:
[[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[-2., 0., 1., 0., 0.],
[ 0., -2., 0., 1., 0.],
[ 0., 0., -2., 0., 1.]]
uj5u.com熱心網友回復:
對于給定的大小,您可以創建一個單位矩陣,然后沿著主對角線正下方的對角線插入 -1 值。
import numpy as np
size = 5
mat = np.identity(size, dtype=int)
for i in range(1, size):
j = i-1
mat[i, j] = -1
print(mat)
輸出:
[[ 1 0 0 0 0]
[-1 1 0 0 0]
[ 0 -1 1 0 0]
[ 0 0 -1 1 0]
[ 0 0 0 -1 1]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/353458.html
上一篇:np.where()轉換失敗
