gpt4 book ai didi

python - 查找数组中彼此最远的点

转载 作者:行者123 更新时间:2023-11-28 18:23:29 26 4
gpt4 key购买 nike

我有 5 个具有 x,y 坐标的点,我还有一个允许的 x,y 偏移量。我可以将此偏移应用于每个点以将其正向和负向移动。这意味着在应用所有允许的位移后,每个点有四个可能的位置。

import numpy as np
import matplotlib.pyplot as plt

# xy data for 5 points
xy = [[1929.39695287, 1579.6, 1548.0451124, 1561.47793473, 1053.18163361],
[2020.79329391, 1869.4327316, 1800.71748721, 2112.769, 1840.28]]
xy = zip(*xy)

# Define xy offset
offset = [201.8445, 202.9015]

# Create the 4 possible offset combinations for each of the 5 points
xy_offset = []
for pt in xy:
xy_offset.append([
[pt[0] + offset[0], pt[1] + offset[1]],
[pt[0] + offset[0], pt[1] - offset[1]],
[pt[0] - offset[0], pt[1] + offset[1]],
[pt[0] - offset[0], pt[1] - offset[1]]])

plt.scatter(*zip(*xy), c='k')
for xy in xy_offset:
plt.scatter(*zip(*xy))
plt.show()

原始点在下面以黑色显示,它们的 4 个可能的新位置是彩色的(每个点的 4 个偏移位置颜色相同):

enter image description here

我需要为所有点找到 5 个"new"位移位置的组合,以使每个点与最近点之间的距离之和最大化。

最佳答案

那好吧……近似解算法……

  1. 计算现有点的质心。
  2. 对于每个点的 4 个选择,选择离质心最远的一个。
  3. 计算总距离;这是您的第一个近似值。
  4. 对于集合中的每个点,检查移动到其他三个选项中的每一个的效果。如果其中任何一个提供了更好的总距离,请更改到该位置。
  5. 重复第 4 步,直到没有进一步的变化。

关于python - 查找数组中彼此最远的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43260355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com