是否有任何快速蛮力查找的 numpy 方法?

Is there any numpy-method of brute-force finding fast?

假设我有 n x 64 数组和 m x 64 数组。我想找到以下结果的最佳 n 对:

list_best=[]
for nn in range(n):
    ele_n = nx64_array[nn,:]
    ele_best = np.ones_like(ele_n)
    for mm in range(m):
        ele_m = mx64_array[mm,:]
        diff = np.sum(np.abs(ele_n - ele_m))
        if diff<ele_best : ele_best = ele_m
    list_best.append(ele_best)

但我想知道的是,有任何类似于 numpy 的方法可以实现这一点,因为 for 循环非常慢。

有什么方法可以更快地做到这一点?非常感谢。

您可以尝试以下方法。它产生一个形状为 n x 64 的数组。该数组的每一行都是 mx64 的行,它最接近具有相同索引的数组 nx64 的行:

import numpy as np

m = 10
n = 20

nx64 = np.random.rand(n, 64)
mx64 = np.random.rand(m, 64)

mx64[np.argmin(np.abs(nx64[:, None, :] - mx64[None, :, :]).sum(axis=-1), axis=1)]