Python 出现在矩阵项中的nan
我制作了一个10x10的零数组,让每个条目都等于一个足够简单的计算,当我显示我的矩阵时,很多数字前面都有一个nan,我不确定这是什么意思。这是我的密码:Python 出现在矩阵项中的nan,python,arrays,python-3.x,numpy,nan,Python,Arrays,Python 3.x,Numpy,Nan,我制作了一个10x10的零数组,让每个条目都等于一个足够简单的计算,当我显示我的矩阵时,很多数字前面都有一个nan,我不确定这是什么意思。这是我的密码: import numpy as np %pylab inline x1=[0.0,0.0,1.0,0.5,2.0,10.0,11.0,12.0,8.0,8.9] y1=[1.0,1.5,1.0,1.2,2.0,9.0,13.0,8.0,8.0,9.0] Dis1=np.zeros((10,10)) for i in range(10):
import numpy as np
%pylab inline
x1=[0.0,0.0,1.0,0.5,2.0,10.0,11.0,12.0,8.0,8.9]
y1=[1.0,1.5,1.0,1.2,2.0,9.0,13.0,8.0,8.0,9.0]
Dis1=np.zeros((10,10))
for i in range(10):
for j in range(10):
Dis1[i][j]=sqrt((x1[i]-x1[j])**2-(y1[i]-y1[j])**2)
print(Dis1)
谢谢通过阅读您的代码,我假设您得到了每个x1-y1对之间的距离。所以你应该使用毕达哥拉斯定理,它是a^2+b^2=c^2,而不是a^2-b^2=c^2 将距离计算更改为
Dis1[i][j]=sqrt((x1[i]-x1[j])**2+(y1[i]-y1[j])**2)
实际上,您正试图取可能为负数的平方根,它返回NAN。如果您真的想计算矩阵Dis1,那么您必须使用 在您的问题中,每次尝试计算负数的
sqrt
时,输出都是nan
。对于复数,虚部则为非零
Dis1.imag
array([[ 0. , 0.5 , -0. , 0. , 0. ,
0. , 4.79583152, 0. , 0. , 0. ],
[ 0.5 , 0. , -0. , -0. , 0. ,
0. , 3.35410197, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 6.63324958, 0. , 0. , 1.26095202],
[ 0. , 0. , -0. , 0. , 0. ,
0. , 5.38423625, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 6.32455532, 0. , 0. , 1.17898261],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 3.87298335, -0. , 0. , 0. ],
[ 4.79583152, 3.35410197, 6.63324958, 5.38423625, 6.32455532,
3.87298335, 0. , -4.89897949, 4. , 3.40440891],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 4.89897949, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 4. , -0. , 0. , 0.43588989],
[ 0. , 0. , 1.26095202, 0. , 1.17898261,
-0. , 3.40440891, -0. , 0.43588989, 0. ]])
负数的平方根不是数字。你可能想写
((x1[i]-x[j])**2)***(1/2)-(y1[i]-y[j])**2)***(1/2)
来计算距离?我只是把平方差移到括号内。@Kevin:sqrt(-1)=i
你是说sqrt(a+b)
而不是sqrt(a-b)
,这解决了我的问题,谢谢!
Dis1.imag
array([[ 0. , 0.5 , -0. , 0. , 0. ,
0. , 4.79583152, 0. , 0. , 0. ],
[ 0.5 , 0. , -0. , -0. , 0. ,
0. , 3.35410197, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 6.63324958, 0. , 0. , 1.26095202],
[ 0. , 0. , -0. , 0. , 0. ,
0. , 5.38423625, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 6.32455532, 0. , 0. , 1.17898261],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 3.87298335, -0. , 0. , 0. ],
[ 4.79583152, 3.35410197, 6.63324958, 5.38423625, 6.32455532,
3.87298335, 0. , -4.89897949, 4. , 3.40440891],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 4.89897949, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. ,
0. , 4. , -0. , 0. , 0.43588989],
[ 0. , 0. , 1.26095202, 0. , 1.17898261,
-0. , 3.40440891, -0. , 0.43588989, 0. ]])