Временная сложность любого алгоритма очень важна для принятия решения о надежности приложения. Запуск большого алгоритма как можно быстрее очень важен, когда речь идет о применении вывода в реальном времени. Для этого в Python есть несколько стандартных математических функций для быстрого выполнения операций над целыми массивами данных без необходимости написания циклов. Одной из таких библиотек, которая содержит такую функцию, является numpy . Давайте посмотрим, как мы можем использовать эту стандартную функцию в случае векторизации.
Что такое векторизация?
Векторизация используется для ускорения кода Python без использования цикла. Использование такой функции может помочь минимизировать время выполнения кода. С вектором выполняются различные операции, такие как скалярное произведение векторов, также известное как скалярное произведение, поскольку оно дает один выходной результат, внешние произведения, которые в квадратной матрице измерений. равна длине X длины векторов, умножение на элемент которого дает произведение. Элемент индексов и размерность матрицы остаются неизменными.
Будем посмотрите, как классические методы занимают больше времени, чем обычные функции, вычисляя время их обработки.
outer (a, b): вычисление внешнего произведения двух векторов.
умножить (a, b): матричное произведение двух массивов.
точка (a, b): скалярное произведение двух массивов.
нули ((n, m)): возвращает матрицу заданной формы и типа, заполненную нулями.
process_time (): Возвращает значение (в долях секунды) суммы системного и пользовательского процессорного времени текущего процесса. Он не включает время, прошедшее во время сна.
Дополнительный продукт:
Дополнительный продукт — это алгебраическая операция, при которой два вектора одинаковой длины умножаются так, что получается одно число. Дот-продукт часто называют внутренним продуктом . Результатом этого произведения является скалярное число. Рассмотрим две матрицы a и b одинаковой длины, скалярное произведение выполняется путем транспонирования первой матрицы, а затем выполняется умножение математической матрицы на a ' (переставить a) и b,, как показано на изображении ниже.
Визуальное представление скалярного произведения —

Ниже приведен код Python:
# Dot product
импорт
время
import
numpy
import
массив
# 8 байт int
a
=
array.array (
`q`
)
for
i
in
диапазон
(
100000
):
a.append (i);
b
=
массив. массив (
` q`
)
для
i
in
диапазон
(
100000
,
200000
):
b.append (i)
# классические векторы реализации скалярного произведения
tic
=
время.process_time ()
точка
=
0.0
;
for
i
in
диапазон
(
len
(a)):
точка
+
=
a [i]
*
b [i]
toc
=
время.process_time ()
print
(
"dot_product ="
+
str
(точка));
print
(
"Время вычисления ="
+
str
(
1000
*
(toc
-
tic))
+
"ms"
)
n_tic
=
время .process_time ()
n_dot_product
=
numpy.dot (a, b)
n_toc
=
time.process_time ()
print
(
"n_dot_product ="
+
str
(n_dot_product))
print
(
"Время вычисления ="
+
str
(
1000
*
(n_toc
-
n_tic))
+
"ms"
)
Выход:
dot_product = 833323333350000,0 Время вычисления = 35,59449199999999 мс n_dot_p roduct = 833323333350000 Время вычисления = 0,1559900000000225 мс
Outdoor product:
Тензорное произведение двух векторов координат называется Внешняя работа . Рассмотрим два вектора a и b размерами nx 1
и mx 1
, тогда внешнее произведение вектора приводит к прямоугольная матрица nxm
. Если два вектора имеют одинаковую размерность, то результирующая матрица будет квадратной матрицей, как показано на рисунке.
Визуальное представление внешнего произведения —

Ниже приведен код Python:
Выход: outer_product = [[0. 0. 0. ... , 0. 0. 0.] [200.201.202. ..., 397. 398. 399.] [400. 402. 404. ..., 794. 796. 798.] ..., [39400. 39597. 39794. ..., 78209. 78406. 78603. ] [39600. 39798. 39996. ..., 78606. 78804. 79002.] [39800. 39999. 40198. ... , 79202. 79401.]] Время вычисления = 39,821617 мс external_product = [[0 0 0 ..., 0 0 0] [200 201 202 ..., 397 398 399] [400 402 404 ..., 794 79 6 798] ..., [39400 39597 39794 ..., 78209 78406 78603] [39600 39798 39996 ..., 78606 78804 79002] [39800 39999 40198 ..., 79003 792013] 792013 Время вычисления = 0,2809480000000031 мс Поэлементное произведение: Визуальное представление элемента wise product — ![]() Ниже приведен код Python:
|
Выход:
< Pre> Element Wise Product = 00 5.00000000E + 00 5.00010000E + 04 1.00004000E + 05 ..., 4.99955001e + 09 4.99970000E + 09 4.99985000E + 09] Время вычислений = 23.516678000000000013MS Элемент Wise Production = [0 50001 100004. .. , 704582713 704732708 704882705] Время вычисления = 0,2250640000000248 мс