[英]Python, lil_matrix : set the diagonal to be a power of a number
我希望矩陣A對角線的項是實數c>1
的冪,這樣a_ii=c^(i+1)
,即,當我們通過對角線時,從較小的冪到較大的冪。
我的矩陣是10x10的正方形矩陣。
from scipy.sparse import lil_matrix
A = lil_matrix((10, 10))
我考慮過使用函數A.setdiag
但我不知道如何引入對i
的依賴。
您可以使用A.setdiag
:
import numpy as np
import scipy.sparse as sparse
N = 5
c = 1.1
A = sparse.lil_matrix((N, N))
A.setdiag(c**np.arange(1, N+1))
print(A.todense())
產量
[[ 1.1 0. 0. 0. 0. ]
[ 0. 1.21 0. 0. 0. ]
[ 0. 0. 1.331 0. 0. ]
[ 0. 0. 0. 1.4641 0. ]
[ 0. 0. 0. 0. 1.61051]]
NumPy對數組執行逐元素算術。 因此,將標量c
提高到數組np.arange(1, N+1)
,將返回一個新的NumPy數組,其中np.arange(1, N+1)
每個i
具有值c**i
:
In [18]: c, N = 1.1, 5
In [21]: np.arange(1, N+1)
Out[21]: array([1, 2, 3, 4, 5])
In [22]: c**np.arange(1, N+1)
Out[22]: array([ 1.1 , 1.21 , 1.331 , 1.4641 , 1.61051])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.