np.linalg.inv() 导致数组充满 np.nan
我正在尝试计算 矩阵的逆矩阵 通过:
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
.
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
并非所有矩阵都有逆矩阵。如果矩阵的行列式非零,则矩阵有 和 逆矩阵。
首先检查是否
如果它非零,那么您应该能够执行
第二步,确保
IA
没有单个NaN
值。如果是这样,那么计算其倒数将得到一个 NaN 值矩阵。Not all matrices have an inverse. A matrix has and inverse if its determinant is non-zero.
Check first whether
If it's non-zero, then you should be able to do
Second, make sure
I-A
does not have a singleNaN
value. If it does, then computing its inverse will result to a matrix ofNaN
values.问题出在 A 中。
数据框中可能存在 nan 值。
矩阵 A 可以是奇异的,请检查 np.linalg.det(A) 是否不为 0
然后我将向函数 np.linalg.inv 传递一个 numpy 数组使用
pd.DataFrame.to_numpy
(https://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 0Then I would pass to the function
np.linalg.inv
a numpy array usingpd.DataFrame.to_numpy
(https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_numpy.html)原因是至少第 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. Thenp.inf
value can be replaced viaA[np.isinf(A)] = 0
. Ifnp.inf
is replaced with zero, there are nonp.nan
values in L.