python - 优化数组中的计数

标签 python arrays max counting minimum

我认为我的代码可以做得更好......

我想要什么:

array a = ([1,2,3],[4,5,6],[7,8,9])
array b = ([2,3,4],[2,2,2])

a[0]到b[0]和b[1]的欧几里得距离,然后是其中的最小值,依此类推......

结果应该是这样的

result = ([1,2]) 

我认为我的做法有点复杂:

result = [0]*len(b)
for i in a:
    c = 0
    minimum = euclid(a[0],b[0])
    place = 0
    for j in b:
        c=c+1
    if (minimum > euclid(i,j)):
          minimum = euclid(i,j)
          place = c 
    result[place-1] = result[place-1]+1

好吧,我试着更好地解释一下。我有两个数组 A 和 B 数组 A 有 3 个值(值 <=> [1,2,3]) 现在我想计算 A 的所有值与 B 的所有值的欧氏距离,并计算 B 的频率[0] 或 B[1] 是最小值。

所以我开始编写代码手册: 首先我用 b[0] 计算 a[0] 并发现这是最小值,因为目前没有最小值。接下来我用 b[1] 计算 a[0] 并发现 euclidean(a[0],b[1]) < euchlidean(a[0],b[0]) 所以我设置了数组从 c([0,0]) 到 c([0,1]) 的时刻。接下来,我计算 a[1] 到 b[0] 和 b[1] 的欧几里德距离,并发现 b[0] 是这两个值中的最小值,因此我将 c 设置为 c([1,1])。 .

最佳答案

我相信你所说的是你有两个点列表 - ab。对于 a 中的每个点,为 b 中最接近的点(最小欧几里德距离)增加一个计数器。这是正确的吗?

以下是我实现这一目标的方法:

results = [0] * len(b)
for p_a in a:
    dists = [euclid(p_a, p_b) for p_b in b]
    min_index = dists.index(min(dists))
    results[min_index] += 1

关于python - 优化数组中的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700053/

相关文章:

python - 大型 Python 随机共享器

Python 内存占用与堆大小

c++ - vector 数组还是数组 vector ?

algorithm - 最大异或与最接近的数字

r - 如何返回一列的行值,使得它们在另一列中的对应值是R中最小的n值

python - Pandas groupby : get max value in a subgroup

python:类范围内的函数

python - 如何使重复的线条在 Plotly 中可见

javascript - 检查 javascript 数组是否为二进制的快速方法(仅包含 0 和 1)

javascript - 如何将对象与数组进行比较并返回值