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



我有一个形状为(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](位于相反侧时,选择哪个元素并不重要。我怎么能用努皮做这个?

a = np.array(a)
b = np.array(b)
a[abs(a-b).argmin(0), np.arange(a.shape[1])]

最新更新