本帖最后由 xiaosuobjsd 于 2022-8-1 16:54 编辑
如题:
a = [[1, 2, 3], [4, 5, 6]]
b = [[11, 12, 13], [14, 15, 16], [17, 18, 19]]
a和b是三维空间内的几个点的数组,求a各点到b上各点的最近距离
我用2个循环嵌套+欧氏距离公式然后取最小值:
for i in a:
for j in b:
x = a[0] - b[0]
y = a[1] - b[1]
z = a[2] - b[2]
然后 L = x^2 + y^2 + z^2 再开方
append(L)
L取最小值
print "L"
得到的答案是:
('点1距离另外三个点的最近距离为:', 17.32)
('点2距离另外三个点的最近距离为:', 12.12)
问题是,如何只用numpy函数快速实现?举例:
a = [
[1,2,3],
[1,2,3],
[1,2,3],
[4,5,6],
[4,5,6],
[4,5,6]
]
b = [
[11,12,13],
[14,15,16],
[17,18,19],
[11,12,13],
[14,15,16],
[17,18,19]
]
这样就可以用a-b快速得到和欧氏距离有关的数据
(其实原题是a有数千个数据,b也有数千个数据,用for循环会消耗20秒时间来计算,但是用numpy可以在1秒内完成,所以求解)
|