Нормализация Python без каких-либо пакетов

1

Попытка рассчитать норму L1 без использования каких-либо пакетов в python

Допустим, что у меня есть вектор: l = [2.34, 3.32, 6.32, 2.5, 3,3, 5.32]

И я хочу найти L1 этого вектора без каких-либо пакетов:

Я подсчитал

mean = sum(l) / float(len(l)
variance = sum(pow(x-mean, 3) for x in l) / len(l)
normalized = [(x-mean)/std for x in l]

Как получить L1-Norm

  • 2
    Если вы не хотите использовать какие-либо пакеты, почему вы numpy ?
  • 2
    Краткое примечание: дисперсия - это сумма квадратов расстояния от среднего значения. Не кубики. Кроме того, ваш код после публикации не будет работать. Наконец, пожалуйста, опубликуйте желаемый результат и то, что вы уже пробовали. Кроме того, вы ищете норму L1 от среднего? Медиана? От 0?
Показать ещё 3 комментария
Теги:

2 ответа

2

Вы можете получить норму L1 следующим образом:

sum(map(abs, l))
# 25.8

Чтобы проверить (используя Numpy):

import numpy as np
np.linalg.norm(l, 1)
# 25.800000000000001
  • 0
    Это не L1-Норма
  • 1
    linalg.norm определяется как норма вектора L1 - как здесь . @RafaelC, ты прав, я делал L2.
Показать ещё 2 комментария
0

Используя встроенный math модуль, норма $ L ^ 1 $ будет:

L1 = sum([math.fabs(x) for x in l])
  • 1
    лучше: L1 = sum(map(math.fabs,l))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню