如何在python中获得一个巨大对角矩阵的伪逆?

如何在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

如果我有一个对角线为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(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万美元