我做了一个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):
for j in range(10):
Dis1[i][j]=sqrt((x1[i]-x1[j])**2-(y1[i]-y1[j])**2)
print(Dis1)
谢谢
2条答案
按热度按时间uplii1fm1#
我假设,通过阅读你的代码,你得到了每个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。dojqjjoe2#
如果你真的想计算矩阵
Dis1
,则必须使用复数。在你的问题中,每次当你试图计算
sqrt
输出为负数nan
. 对于复数,虚部是非零的。