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

发布于 2025-01-10 08:27:36 字数 570 浏览 0 评论 0原文

我正在尝试计算 矩阵的逆矩阵 通过:


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 值(尽管不应该有任何值),但是问题仍然存在。

有什么建议吗?

I am trying to calculate the inverse of a matrix via:


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

I = np.identity(len(A))

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

However, the resulting array is full of np.nan.

enter image description here

I don't understand why that's the case.
I've tried to replace all np.nan values in A (although there shouldn't be any) via A[np.isnan(A)] = 0 but the problem persists.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

帅气尐潴 2025-01-17 08:27:36

并非所有矩阵都有逆矩阵。如果矩阵的行列式非零,则矩阵有 和 逆矩阵。

首先检查是否

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

如果它非零,那么您应该能够执行

np.linalg.inv(I-A)

第二步,确保 IA 没有单个 NaN 值。如果是这样,那么计算其倒数将得到一个 NaN 值矩阵。

Not all matrices have an inverse. A matrix has and inverse if its determinant is non-zero.

Check first whether

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

If it's non-zero, then you should be able to do

np.linalg.inv(I-A)

Second, make sure I-A does not have a single NaN value. If it does, then computing its inverse will result to a matrix of NaN values.

爱格式化 2025-01-17 08:27:36

问题出在 A 中。

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

然后我将向函数 np.linalg.inv 传递一个 numpy 数组使用pd.DataFrame.to_numpyhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_numpy.html

The problem is in A.

There could be nan values in the dataframe.
The matrix A could be singular, please check if np.linalg.det(A) is not 0

Then I would pass to the function np.linalg.inv a numpy array using pd.DataFrame.to_numpy (https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_numpy.html)

救星 2025-01-17 08:27:36

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

The reason is an np.inf value in at least column 293. The np.inf value can be replaced via A[np.isinf(A)] = 0. If np.inf is replaced with zero, there are no np.nan values in L.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文