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
值的矩阵。
我正在尝试通过以下方式计算 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
值的矩阵。