У меня проблема с трансляцией Numpy между двумя матрицами.Мне нужно вычислить евклидово расстояние между 2 матрицами для классификатора knn.Я уже сделал это с двумя циклами и одним циклом, но это слишком медленно.Я ищу это с вещанием Numpy без какого-либо явного цикла, но я застрял.
Версия с двумя циклами:
num_test = X.shape[0]
num_train = self.X_train.shape[0]
dists = np.zeros((num_test, num_train))
for i in range(num_test):
for j in range(num_train):
dists[i, j] = np.sqrt(np.sum(np.power(self.X_train[j, :] - X[i, :], 2)))
return dists
Версия с одним циклом:
num_test = X.shape[0]
num_train = self.X_train.shape[0]
dists = np.zeros((num_test, num_train))
for i in range(num_test):
dists[i, :] = np.sqrt(np.sum(np.power(self.X_train - X[i, :], 2), axis=1))
return dists
Форма X_train (5000, 784) и X (500,784).Вывод должен иметь форму (500, 5000).
У вас есть идеи, чтобы помочь мне?