【问题标题】:Closest neighbor to value selected at random from list?从列表中随机选择的值的最近邻?
【发布时间】:2020-09-27 07:49:28
【问题描述】:

我有一个随机选择一个数字的列表。我现在想选择列表中与我选择的数字最接近的整数。以下是我目前所拥有的:

from random import choice

a = [0,1,2,3,4,5,6,7,8,9]
r = choice(a)

例如,如果 r = 9,则最近的邻居将是 8。对于 r=7,它可能是 6 或 8。两个最接近的不是特别重要,只要它是相邻值即可。

【问题讨论】:

  • 如果r = 9,是否可以选择7?如果是,分别选择 7 和 9 的概率是多少?
  • 如果列表中有重复元素怎么办
  • 列表总是从 0 到 9。我正在尝试选择最接近的,所以对于 r=9 它将是 8,对于 r=5 它可能是 4 或 6
  • 你可以找到r的索引然后你可以选择邻居
  • 谢谢,我会试试@komatiraju032

标签: python list random list-comprehension


【解决方案1】:

你可以使用 numpy

from random import choice
import numpy as np

a = np.array([0,1,2,3,4,5,6,7,8,9])
r = choice(a)

neighs = a[abs(a - r) == 1]

print(r, neighs)
# 7 , [6 8]

【讨论】:

    【解决方案2】:

    您还可以使用此方法对数组进行排序并搜索最近的邻居。正如您提到的,两个最接近的值之间的选择并不是特别重要,只要它是相邻值,即 r=7,它可以是 6 或 8。此方法选择两个最接近的相邻值中的最小值,即 r =7 它选择 6 而不是 8。

    def getclosest(targetVal, sample):
        dif=100; cand=0;
        for x in sample:
            if (abs(x - targetVal) < dif)& (x!=targetVal):
                dif = abs(x - targetVal);
                cand = x;
        return cand;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多