np.linalg.inv() 导致数组充满 np.nan

np.linalg.inv() leads to array full of np.nan

我正在尝试通过以下方式计算 a matrix 的倒数:


A = pd.read_csv("A_use.csv", header = None)

I = np.identity(len(A))

INV = np.linalg.inv(I - A) 

然而,生成的数组充满了np.nan

我不明白为什么会这样。 我试图通过 A[np.isnan(A)] = 0 替换 A 中的所有 np.nan 值(尽管不应该有任何值),但问题仍然存在。

有什么建议吗?

问题在A.

数据框中可能有 nan 值。 矩阵A可能是奇异的,请检查np.linalg.det(A)是否不是0

然后我将使用 pd.DataFrame.to_numpy (https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_numpy.html)

向函数 np.linalg.inv 传递一个 numpy 数组

原因是至少第 293 列中有一个 np.inf 值。np.inf 值可以通过 A[np.isinf(A)] = 0 替换。如果 np.inf 替换为零,则 L.

中没有 np.nan 个值

并非所有矩阵都有逆矩阵。如果行列式为 non-zero.

,则矩阵具有 和 逆矩阵

先检查是否

np.linalg.det(I-A) ~= 0

如果是non-zero,那么你应该可以做到

np.linalg.inv(I-A)

其次,确保 I-A 没有单个 NaN 值。如果是这样,那么计算它的逆将得到一个 NaN 值的矩阵。