В случае numpy, предпочитайте np.sum
и np.min
, а не сборки Python sum
и min
.
. Мы можем адаптировать npdistance
для двумерных векторов numpy:
def npdistance(x1, x2):
return np.sum((np.array(x1)-np.array(x2))**2, axis=1)
Рассмотрим матрицу x2
:
x2 = np.array([[1,1,1],[2,3,4]])
Матрица x2
имеет две оси:
- нулем является векторное число:
x2[0]
равно np.array([1, 1, 1])
иx2[1]
is np.array([2, 3, 4])
, - первая ось для векторного измерения:
x2[1][1]
is 3
(второй элемент первого вектора).
Выполняем сумму вдоль axis=1
для получения расстояний для каждого вектора.
- Без
np.sum
axis=1
будет возвращено скалярное значение, - Использование buildin
sum
дает суммувсе векторы (ala axis=0
).
npnearest
работает правильно в этом случае.
def npnearest(u, X):
L=npdistance(u,X)
return min(L)
npnearest(np.array([1,1,1]), np.array([[1,1,1],[2,3,4]]))
дает 0.