代码之家  ›  专栏  ›  技术社区  ›  sixtytrees

查找与numpy数组中元素的最小绝对差对应的值

  •  0
  • sixtytrees  · 技术社区  · 4 年前

    我有一个形状为(n,m)的数组,以及一个形状(m)的矩阵b。我想创建一个数组c,其中包含a中最接近b对应元素的元素。我可以用以下代码来实现:

    a = [[11, 2, 9, 4, 5], [4, 4, 6, 1, -2]]
    b = [1, 3, 12, 0, 0]
    c = []
    
    for inner in range(len(a[0])):
        min_distance = float('inf')
        best_index = 0
        for outer in range(len(a)):
            current_distance = abs(b[inner] - a[outer][inner])
            if min_distance > current_distance:
                min_distance = current_distance
                best_index = outer
        c.append(a[best_index][inner])
    
    print(c)
    # [4, 2, 9, 1, -2]
    

    当a(即a[0][1]和a[1][1])中的两个元素距离相等,但与b(即b[1])中的一个元素相反时,选择哪个元素并不重要。 我怎么能用numpy做到这一点?

    0 回复  |  直到 4 年前
        1
  •  1
  •   zuijiang    4 年前
    a = np.array(a)
    b = np.array(b)
    a[abs(a-b).argmin(0), np.arange(a.shape[1])]