【发布时间】:2020-12-13 20:59:10
【问题描述】:
我用 Python 编写了一个代码来查找数组的倒数。我确信代码是正确的,但最后,数组及其逆的乘法给了我一个不同于身份的数组,如下所示(a 是数组,a*ainverse 是 a 及其逆相乘的结果) .
a=np.array([[2,3],
[3,2]],
dtype=float)
a.dot(rowequi(a))=[[ 1.00000000e+00 -2.22044605e-16]
[-2.22044605e-16 1.00000000e+00]]
我想问题出在我为条目选择的数据类型 (dtype=float) 上,但我不知道如何解决它。有什么办法不使用float数据类型不遇到这个问题?
以下是代码:
import numpy as np
a=np.array([[2,3],
[3,2]],
dtype=float)
def rowequi(a):
counter=[]
n=len(a[0])
b=np.empty((n,n+n),dtype=float)
identity=np.empty((n,n),dtype=float)
for i in range(n):
for j in range(n):
if i==j:
identity[i,j]=1
else:
identity[i,j]=0
for k in range(n):
f=list(a[k])
for t in range(n):
f.append(identity[k,t])
b[k]=np.array(f)
for j in range(n):
for i in range(n):
if b[j,i]!=0:
b[j]=(1/b[j][i])*b[j]
counter.append((j,i))
for t in range(n):
if t!=j:
b[t]=b[t]-b[t][i]*b[j]
break
return b
c=np.array([[-0.4, 0.6],
[0.6, -0.4]])
print(c.dot(a))
【问题讨论】:
-
a*ainverse不是矩阵叉积。为此,您应该致电numpy.cross -
@zvone 我编辑了问题并使用了 a.dot() 方法。
-
您正在处理浮点数。你有一些非常接近单位矩阵的东西。
标签: python numpy floating-point