不确定我的标题是否正确,但基本上我有一个(x,y,z)格式的参考坐标,并且也有该格式的大型坐标列表/数组。我需要获得两者之间的欧几里得距离,因此从理论上讲,使用numpy和scipy,我应该能够执行以下操作:import numpy, scipy.spatial.distancea = numpy.array([1,1,1])b = numpy.random.rand(20,3)distances = scipy.spatial.distance.euclidean(b, a)但是,我没有得到一个数组,而是得到了一个错误: ValueError: Input vector should be 1-D.不知道如何解决此错误并获得我想要的内容而不必求助于循环等,这与使用Numpy的目的相违背。长期而言,我想使用这些距离来计算真值掩码,以计算箱中的距离值。我不确定我是在使用错误的函数还是在使用错误的函数,因此我无法在文档中找到任何能更好地工作的东西。
3 回答

MYYA
TA贡献1868条经验 获得超4个赞
此代码将获得欧几里得范式,该范式在许多情况下都应该有效,并且相当快,而且只有一行。根据需要,其他方法更为有效或灵活,我希望根据正在完成的工作发布其他一些解决方案。
import numpy
a = numpy.array([1,1,1])
b = numpy.random.rand(20,3)
distances = numpy.linalg.norm(a - b, axis = 1)
添加回答
举报
0/150
提交
取消