Найти длину вектора python

Работа с векторами в Python с помощью NumPy

В этом уроке мы узнаем, как создать вектор с помощью библиотеки Numpy в Python. Мы также рассмотрим основные операции с векторами, такие как сложение, вычитание, деление и умножение двух векторов, векторное точечное произведение и векторное скалярное произведение.

Что такое вектор в Python?

Вектор известен как одномерный массив. Вектор в Python – это единственный одномерный массив списков, который ведет себя так же, как список Python. Согласно Google, вектор представляет направление, а также величину; особенно он определяет положение одной точки в пространстве относительно другой.

Векторы очень важны в машинном обучении, потому что у них есть величина, а также особенности направления. Давайте разберемся, как мы можем создать вектор на Python.

Создание вектора в Python

Модуль Python Numpy предоставляет метод numpy.array(), который создает одномерный массив, то есть вектор. Вектор может быть горизонтальным или вертикальным.

Вышеупомянутый метод принимает список в качестве аргумента и возвращает numpy.ndarray.

Давайте разберемся в следующих примерах.

Пример – 1: горизонтальный вектор

Пример – 2: Вертикальный вектор

Базовые операции вектора Python

После создания вектора мы теперь будем выполнять арифметические операции над векторами.

Ниже приведен список основных операций, которые мы можем производить с векторами:

  • сложение;
  • вычитание;
  • умножение;
  • деление;
  • точечное произведение;
  • скалярные умножения.

Сложение двух векторов

В векторном сложении это происходит поэлементно, что означает, что сложение будет происходить поэлементно, а длина будет такой же, как у двух аддитивных векторов.

Давайте разберемся в следующем примере.

Вычитание

Вычитание векторов выполняется так же, как и сложение, оно следует поэлементному подходу, и элементы вектора 2 будут вычтены из вектора 1. Давайте разберемся в следующем примере.

Умножение векторов

Элементы вектора 1 умножаются на вектор 2 и возвращают векторы той же длины, что и векторы умножения.

Умножение производится следующим образом.

Первый элемент вектора 1 умножается на первый элемент соответствующего вектора 2 и так далее.

Операция деления двух векторов

В операции деления результирующий вектор содержит значение частного, полученное при делении двух элементов вектора.

Давайте разберемся в следующем примере.

Как видно из вышеприведенного вывода, операция деления вернула частное значение элементов.

Векторное точечное произведение

Векторное скалярное произведение выполняется между двумя последовательными векторами одинаковой длины и возвращает единичное скалярное произведение. Мы будем использовать метод .dot() для выполнения скалярного произведения. Это произойдет, как показано ниже.

Давайте разберемся в следующем примере.

Векторно-скалярное умножение

В операции скалярного умножения; мы умножаем скаляр на каждую компоненту вектора. Давайте разберемся в следующем примере.

В приведенном выше коде скалярное значение умножается на каждый элемент вектора в порядке s * v =(s * v1, s * v2, s * v3).

Операции над векторами в numpy

Рассмотрим некоторые общие функции линейной алгебры и их применение на чистом Python и numpy. Все примеры — на Jupyter Notebook.

Списки в Python не являются векторами, по умолчанию над ними нельзя производить поэлементные операции.

В Python необходимо определять собственные функции, чтобы оперировать списками как векторами. Для сравнения: в numpy для аналогичных операций достаточно одной строки кода.

Сложение векторов

Но, конечно, в numpy это можно сделать с помощью оператора + на numpy-массивах или с помощью метода sum() .

Вычитание векторов

Скалярное умножение

Среднее значение вектора

Скалярное произведение

Сумма квадратов

Величина вектора

Расстояние между двумя векторами

На заметку

В ряде рассмотренных примеров используется sum() . Чем отличается встроенная Python-функция sum() от numpy.sum() ? Например тем, что numpy.sum() быстрее обрабатывает numpy-массивы, но медленнее Python-списки.

Проверим в Python 2.7.2 и Numpy 1.6.1:

Результат при x = range(1000) :

Результат при x = np.random.standard_normal(1000) :

Согласитесь, имеет смысл учитывать контекст использования.

В основе статьи — материал Бена Алекса Кина. Мой небольшой вклад — перевод, идиоматический код numpy-примеров и дополнительные пояснения.

Как вы получаете величину вектора в Numpy?

в соответствии с «Есть только один очевидный способ сделать это», как вы получаете величину вектора (1D массива) в Numpy?

выше работает, но я не верю что я должен сам указать такую тривиальную и основную функцию.

5 ответов

функции вы после numpy.linalg.norm . (Я считаю, что он должен быть в base numpy как свойство массива-скажем x.norm() — ну да ладно).

вы также можете кормить в дополнительный ord для энного нормой порядке. Скажем, вы хотели 1-норму:

Если вы беспокоитесь о скорости, вы должны использовать:

вот некоторые ориентиры:

EDIT: реальное улучшение скорости происходит, когда вам нужно взять норму многих векторов. Использование чистых функций numpy не требует никаких циклов. Например:

еще одна альтернатива-использовать einsum функция в numpy для любых массивов:

однако, похоже, есть некоторые накладные расходы, связанные с его вызовом, которые могут замедлить его с небольшими входами:

самый быстрый способ, который я нашел, — через inner1d. Вот как он сравнивается с другими методами numpy:

3x быстрее, чем linalg.норма и волос быстрее, чем эйнсум

Поделиться или сохранить к себе: