Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Продолжение статей по numpy
Справочник математических функций по numpy и другие возможности
Продолжаем изучать библиотеку numpy. Сегодня справочник стандартных математических функций и некоторые другие особенности этой замечательной библиотеки.
Справочник числовых математических функций numpy
В начале перечислим основные математические функции numpy. Набор, кстати, впечатляет. Сегодня только унарные функции.
- abs, fabs — вычисляет абсолютные значения каждого элементов массива;
- sqrt — вычисляет квадратный корень из каждого элемента массива;
- square — вычисляет квадрат каждого элемента массива;
- exp — вычисляет экспоненту от каждого элемента массива;
- log, log10, log2, log1p — вычисляет натуральный, десятичный логарифмы, логарифм по основанию 2 и log(1 + x), соответственно;
- sign — вычисляет знак каждого элемента: 1 (положительный элемент), 0 (ноль), −1 (отрицательный элемент);
- ceil — вычисляет наименьшее целое число большее либо равное каждого элемента массива;
- floor — вычисляет наибольшее целое число меньшее либо равное каждого элемента массива;
- rint — округляет элементы к ближайшим целым сохраняя dtype;
- modf — возвращает дробные и целые части каждого элемента массива;
- isnan — возвращает логический массив (True, False), указывающий является каждый элемент входного массива NaN (Not A Number - не число);
- isfinite, isinf — возвращает булев массив, указывающий является каждый элемент конечным (не inf и не NaN) или бесконечным, соответственно? inf от infinity, т.е. бесконечность;
- cos, cosh, sin, sinh, tan, tanh — тригонометрические и гиперболические функции;
- arccos, arccosh, arcsin, arcsinh, arctan, arctanh — обратные тригонометрические и гиперболические функции;
- logical_not — вычисляет логическое not для каждого элемента массива.
Бинарные функции библиотеки numpy мы представим в следующей статье.
Самое приятное в библиотеке numpy это то, что мы спокойной можем её использовать для обычных величин, тем самым превзойдя возможности стандартной библиотеки math
#!/usr/bin/python3
import numpy as np
e = np.exp(1)
print(e)
Результат выполнения фрагмента
2.718281828459045
При воздействии на массив функция действует на каждый элемент массива
#!/usr/bin/python3
import numpy as np
nmp1 = np.array([0, 1.23, 3.1, 1.111, 4.4])
print(nmp1)
nmp2 = np.modf(nmp1)
print(nmp2)
Результат выполнения программы
[0. 1.23 3.1 1.111 4.4 ]
(array([0. , 0.23 , 0.1 , 0.111, 0.4 ]), array([0., 1., 3., 1., 4.]))
Обращу внимание, что функция modf() создаёт кортеж из двух массивов numpy. Первый содержит дробную часть чисел исходного массива, второй целую часть исходного массива.
Простые действия над массивами в numpy
Ну, а теперь рассмотрим простые действия с массивами в библиотеке numpy.
В следующем примере и объяснять ничего не нужно, достаточно посмотреть на результаты
#!/usr/bin/python3
import numpy as np
a = np.full((3, 2),3,dtype=np.int64)
b = np.full((3, 2),2,dtype=np.int64)
c = a + b
print(c)
c = a - b
print(c)
c = a * b
print(c)
c = a / b
print(c)
Результат выполнения программы
[[5 5]
[5 5]
[5 5]]
[[1 1]
[1 1]
[1 1]]
[[6 6]
[6 6]
[6 6]]
[[1.5 1.5]
[1.5 1.5]
[1.5 1.5]]
Как, видите всё тут ясно. Следует только отметить метод full() позволяющий задавать массив нужно размерности и заполнения. Вообще функций, с помощью которых можно автоматизировать создание массивов в numpy несколько. Мы перечислим их в следующей статье.
А теперь массив и скаляры.
#!/usr/bin/python3
import numpy as np
a = np.full((3, 2),3,dtype=np.int64)
c = a * 2
print(c)
c = 2 / a
print(c)
c = a + 10
print(c)
Результат выполнения программы
[[6 6]
[6 6]
[6 6]]
[[0.66666667 0.66666667]
[0.66666667 0.66666667]
[0.66666667 0.66666667]]
[[13 13]
[13 13]
[13 13]]
Результаты тоже вполне понятны.
А теперь интересный пример, логическое действие между массивами.
#!/usr/bin/python3
import numpy as np
a = np.full((3, 2),3,dtype=np.int64)
b = np.array([[1, 2], [3, 4], [5, 6]])
c = a > b
print(c)
Результат выполнения
[[ True True]
[False False]
[False False]]
Согласитесь, интересный результат.
Также можно поэлементно выполнять операции & - логическое 'И', | - логическое 'ИЛИ', ^ - логическое 'исключающее ИЛИ'.
Ещё о поиске элементов массива в numpy
Ну, а теперь вернусь к вопросу, который я поднял в прошлой статье. Вопрос о поиске в массиве. Поиск можно осуществлять обычным перебором (а их даже несколько), но есть и специальное средство, это функция numpy.where().
#!/usr/bin/python3
import numpy as np
a = np.array([[3, 2], [3, 4], [5, 6]])
x = np.where(a==3)
print(x)
Результат выполнения
(array([0, 1]), array([0, 0]))
Т.е. получили кортеж, состоящий из двух массивов с координатами - в первом массиве значения строк, в втором значения столбцов.
Условиями поиска, естественно могут быть также и '>', '<', '=>', '=<', '!='.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.