Вы можете использовать np.argmin
, чтобы получить наименьший индекс значения rmse, который можно рассчитать с помощью np.linalg.norm
import numpy as np
a = np.array([[0, 0, 0, 0], [1, 0, 0, 0], [1, 1, 0, 0],[1, 1, 1, 0], [1, 1, 1, 1]])
b = np.array([0.9539342, 0.84090066, 0.46451256, 0.09715253])
np.argmin(np.linalg.norm(a-b, axis=1))
#outputs 2 which corresponds to the value [1, 1, 0, 0]
Как упоминалось в редактировании, b может иметь несколько строк.Оператор хочет избежать цикла for, но я не могу найти способ избежать цикла for.Вот способ компиляции списка, но может быть лучший способ
[np.argmin(np.linalg.norm(a-i, axis=1)) for i in b]
#Outputs [2, 1]