Нахождение евклидова расстояния между векторами матрицы a и вектора b

Вот в чем проблема,

Учитывая двумерный массив numpy ‘a’ размеров n × m и одномерный массив numpy ‘b’ размера m. Вам нужно найти расстояние (евклидово) вектора ‘b’ от строк матрицы ‘a’. Заполните результаты в массиве numpy. Продолжение: могли бы вы решить его без петель?

a = np.array([[1, 1],
              [0, 1],
              [1, 3],
              [4, 5]])
b = np.array([1, 1])
print(dist(a, b))
>>[0,1,2,5]

И вот мое решение

import math


def dist(a, b):
    distances = []
    for i in a:
        distances.append(math.sqrt((i[0] - b[0]) ** 2 + (i[1] - b[1]) ** 2))
    return distances


a = np.array([[1, 1],
              [0, 1],
              [1, 3],
              [4, 5]])
print(dist(a, [1, 1]))

Интересно, как это можно решить более элегантно, и как можно реализовать дополнительную задачу.

1 ответ
1

Я уже разобрался.

return la.norm(a - b, axis=1)

  • 1

    Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением. — Из обзора

    — Рольфль

  • @rolfl Вы просто говорите, что из-за отсутствия import numpy.linalg as la или по какой-то другой причине? И почему они спрашивают себя в целях разъяснения?

    — Мануэль

  • @Manuel — ожидается, что ответы на проверку кода будут проверять код. Этот ответ не содержит критических замечаний (положительных или отрицательных) в отношении кода, указанного в вопросе. Это не обзор, это комментарий.

    — Рольфль

  • @rolfl Вопрос спрашивает «как это можно решить более элегантно, и как можно реализовать дополнительную задачу», и этот ответ делает и то, и другое. И ты сказал «Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под его сообщением». Это явно не просьба о разъяснении, так что вы, должно быть, сказали это, потому что считаете это критикой. Но теперь ты это говоришь «не критикует»?

    — Мануэль

  • @Manuel — этот сайт представляет собой Code Review, даже при представлении альтернативного решения этот сайт требует, чтобы вы ответили, почему решение лучше, и какие проблемы оно решает в коде, заданном в вопросе. Этот ответ не является обзором кода.

    — Рольфль

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *