Вот в чем проблема,
Учитывая двумерный массив 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 ответ
Я уже разобрался.
return la.norm(a - b, axis=1)

Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением. — Из обзора
— Рольфль
@rolfl Вы просто говорите, что из-за отсутствия
import numpy.linalg as laили по какой-то другой причине? И почему они спрашивают себя в целях разъяснения?— Мануэль
@Manuel — ожидается, что ответы на проверку кода будут проверять код. Этот ответ не содержит критических замечаний (положительных или отрицательных) в отношении кода, указанного в вопросе. Это не обзор, это комментарий.
— Рольфль
@rolfl Вопрос спрашивает «как это можно решить более элегантно, и как можно реализовать дополнительную задачу», и этот ответ делает и то, и другое. И ты сказал «Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под его сообщением». Это явно не просьба о разъяснении, так что вы, должно быть, сказали это, потому что считаете это критикой. Но теперь ты это говоришь «не критикует»?
— Мануэль
@Manuel — этот сайт представляет собой Code Review, даже при представлении альтернативного решения этот сайт требует, чтобы вы ответили, почему решение лучше, и какие проблемы оно решает в коде, заданном в вопросе. Этот ответ не является обзором кода.
— Рольфль