Python 查找与numpy数组中元素的最小绝对差相对应的值
我有一个形状(n,m)的数组,还有一个形状(m)的数组b。我想创建一个数组c,其中包含a中与b的对应元素最近的元素。我可以使用以下代码执行此操作:Python 查找与numpy数组中元素的最小绝对差相对应的值,python,numpy,Python,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(l
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中的两个元素(e.i.a[0][1]和a[1][1])距离相等时,选择哪个元素并不重要,而是在b中的一个元素(e.i.b[1])的相对边上。
我怎样才能用numpy做到这一点
a = np.array(a)
b = np.array(b)
a[abs(a-b).argmin(0), np.arange(a.shape[1])]