如何在python中获得一个巨大对角矩阵的伪逆?
如果我有一个对角线为100Kx1的对角矩阵,我怎么才能得到它的伪逆呢? 我不能对矩阵进行对角化,然后得到逆矩阵,就像我对小矩阵所做的那样,所以这是行不通的如何在python中获得一个巨大对角矩阵的伪逆?,python,numpy,matrix,Python,Numpy,Matrix,如果我有一个对角线为100Kx1的对角矩阵,我怎么才能得到它的伪逆呢? 我不能对矩阵进行对角化,然后得到逆矩阵,就像我对小矩阵所做的那样,所以这是行不通的 np.linalg.pinv(np.diag(D))假设有一个100K x 1的向量命名为a: A = np.arange(100000) # will create a vector of 100k x 1 diagnoal_matrix = np.diag(A) 然后,可以找到对角矩阵的伪逆,如下所示: np.linalg.pinv(d
np.linalg.pinv(np.diag(D))假设有一个100K x 1的向量命名为a:
A = np.arange(100000) # will create a vector of 100k x 1
diagnoal_matrix = np.diag(A)
然后,可以找到对角矩阵的伪逆,如下所示:
np.linalg.pinv(diagnoal_matrix)
[[ 0 0 0 ..., 0 0 0]
[ 0 1 0 ..., 0 0 0]
[ 0 0 2 ..., 0 0 0]
...,
[ 0 0 0 ..., 99997 0 0]
[ 0 0 0 ..., 0 99998 0]
[ 0 0 0 ..., 0 0 99999]]
示例代码如下所示:
import numpy as np
A = np.arange(100000)
diagnoal_matrix = np.diag(A)
B = np.linalg.pinv(diagnoal_matrix)
print B
它将按如下方式打印输出:
np.linalg.pinv(diagnoal_matrix)
[[ 0 0 0 ..., 0 0 0]
[ 0 1 0 ..., 0 0 0]
[ 0 0 2 ..., 0 0 0]
...,
[ 0 0 0 ..., 99997 0 0]
[ 0 0 0 ..., 0 99998 0]
[ 0 0 0 ..., 0 0 99999]]
希望有帮助 只取非零元素的倒数。你可以用一个较小的对角矩阵检查这就是
pinv
的作用。我不想得到随机矩阵的伪逆,我想得到我自己对角矩阵的逆,然后将你的对角矩阵作为np.linalg.pinv(diag_矩阵)传递给np.linalg.pinv()我不能,我只能保存对角线,而且它很大,我不能创建一个对角线矩阵,然后得到它的逆矩阵,通过你的对角线向量到np.diag(diag)和diag=np.array([1,2,3,4])。这是你的对角线列表!我看不出它有多大!这是我在问题中写的10万美元