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

时间:2017-03-10 06:00:07

标签: python numpy matrix

如果我有一个对角线矩阵,对角线为100Kx1,我怎样才能获得伪逆? 我不能对矩阵进行对角化,然后就像我对小矩阵所做的那样得到逆,所以这不会起作用

np.linalg.pinv(np.diag(d))

2 个答案:

答案 0 :(得分:2)

只取非零元素的倒数。您可以使用较小的对角矩阵检查这是pinv的作用。

答案 1 :(得分:-1)

假设您有一个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)

示例代码如下所示:

import numpy as np
A = np.arange(100000)
diagnoal_matrix = np.diag(A)
B = np.linalg.pinv(diagnoal_matrix)
print B

它将打印输出如下:

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

希望它有所帮助!