python - 此解决方案是否适用于最近对问题?
问题描述
我一直在寻找 Python 中最接近配对问题的解决方案,但所有解决方案都与我的完全不同。
这是在 2D 维度上查找最近的点对的代码。
def closest_pair_two_axes(xarr, yarr):
pairs = []
# doesn't really depend if xarr or yarr because the lengths are the same
for i in range(len(xarr)):
pairs.append([xarr[i], yarr[i]])
# Finds the difference between each point
dist_arr = []
for i in range(1, len(pairs)-1):
for j in range(i, len(pairs)):
diff_x = pairs[j][0] - pairs[j - i][0]
diff_y = pairs[j][1] - pairs[j - i][1]
diff = (diff_x ** 2 + diff_y ** 2) ** 0.5
dist_arr.append(round(diff, 2))
index = dist_arr.index(min(dist_arr))
closest_distance = dist_arr[index]
return closest_distance
xarr
并且yarr
只是 x 和 y 坐标的数组名称。在函数中,我将两个数组组合成一个包含坐标集的字典。之后,我遍历所有可能的坐标组合并找到它们之间的距离。最后,我找到了最小距离,追溯到它所属的pair,然后返回给用户。
此代码有效,但我不确定它是否正常工作以及结果是否真的是最接近的一对。代码是否正确?
编辑:我将 [j-1] 更改为 [ji] 以便它可以遍历每一对。另外,我使用另一个人的算法(正确的算法)解决了这个问题,并得到了与我的算法相同的答案。它可能不是最快和最干净的代码,但它确实有效!
解决方案
推荐阅读
- reactjs - npm install -g react-native-cli 与使用 npx react-native init 有什么区别
? - django - Django - 创建多个 xml 并将其添加到 zip,并作为附件下载
- electron - 有没有办法在电子 js 中使用 AzureAD 登录?
- python - Python:如果给定其中任意两个参数,我编写代码来查找 x、y 或 (x+y)2 的值。运行良好,直到 x 或 y 是浮动的
- java - JAVA 的 StandardStringDigester 的 PHP 实现
- android - ConstraintLayout 障碍不尊重组
- node.js - 如何使用 Chai、Sinon、Mocha 在 Node.js 中测试控制器
- rust - Rustyline CLI 提示在 SSH 会话上按住“Enter”键时显示奇怪的序列(看起来像 ANSI 转义序列)
- reactjs - 如何在不创建输入空间(段落空间)的情况下点击输入?
- python - 使用 tf.data 时如何对数据进行自定义预处理?