В этом уроке мы узнаем, как создать вектор с помощью библиотеки Numpy в Python. Мы также рассмотрим основные операции с векторами, такие как сложение, вычитание, деление и умножение двух векторов, векторное точечное произведение и векторное скалярное произведение.
- Что такое вектор в Python?
- Создание вектора в Python
- Базовые операции вектора Python
- Сложение двух векторов
- Вычитание
- Умножение векторов
- Операция деления двух векторов
- Векторное точечное произведение
- Векторно-скалярное умножение
- Операции над векторами в numpy
- Сложение векторов
- Вычитание векторов
- Скалярное умножение
- Среднее значение вектора
- Скалярное произведение
- Сумма квадратов
- Величина вектора
- Расстояние между двумя векторами
- На заметку
- Как вы получаете величину вектора в Numpy?
- 5 ответов
Что такое вектор в 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.норма и волос быстрее, чем эйнсум