簡體   English   中英

Python,lil_matrix:將對角線設置為數字的冪

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM