5 самых полезных математических библиотек Python
Математика в Python не ограничивается простыми выражениями. Существует множество полезных библиотек и модулей, способных поднять ваши вычисления на совершенно другой уровень. В этой статье мы познакомимся с пятью самыми полезными из них.
Math
Рано или поздно наступит момент, когда вам не хватит стандартных математических операторов в Python. Например, придется найти квадратный корень, логарифм или синус. В этом вам поможет модуль Math.
>>> import math
>>> math.sqrt(17)
4.123105625617661
>>> math.sin(33)
0.9999118601072672
>>> math.log(15, 2)
3.9068905956085187
Помимо дополнительных математических функций, модуль содержит константы, такие как math.pi
, math.e
и бесконечность - math.inf
. Функция math.isclose()
поможет вам сравнивать числа с заданной точностью.
SymPy
SymPy - библиотека для работы с символьными вычислениями. С этим модулем возможно написать системы уравнений, подставить в них значения, сократить математические формулы. Результаты вычислений можно преобразовать в код LaTeX - это пригодится, если вы публикуете свои результаты в научных журналах или пишете диплом.
>>> from sympy import *
... x = Symbol('x')
... y, z = symbols('y, z')
... expr = (x**2 + y**2) * z
... expr
z*(x**2 + y**2)
>>> expr2 = expr.subs(x, 12)
... expr2.subs(y, 3)
153*z
NumPy
NumPy - библиотека для работы с n-мерными массивами. Они похожи на вложенные кортежи, но требуют, чтобы все элементы были одного типа. Над массивами целиком и их элементами можно проводить различные операции, недоступные для стандартных типов данных.
>>> import numpy as np
>>> a = np.array([1, 0.5, -1.9], dtype=float)
>>> b = np.array([[10], [10], [10]], dtype=float)
c = np.array(a*b)
c
array([[ 10., 5., -19.],
[ 10., 5., -19.],
[ 10., 5., -19.]])
Также в этом пакете доступны продвинутые функции и методы для обработки массивов.
>>> # Ищем среднее по вертикали
>>> c.mean(axis=0)
array([ 10., 5., -19.])
>>> # Ищем среднее по горизонтали
>>> c.mean(axis=1)
array([-1.33333333, -1.33333333, -1.33333333])
Библиотека NumPy написана на С и очень хорошо оптимизирована, что позволяет максимально ускорить вычисления. Это делает ее основой для всех продвинутых математических библиотек Python`a.
SciPy
SciPy ещё больше расширяет возможности NumPy. В этой библиотеке есть множество модулей для самых разных вычислений. Например, модуль scipy.spatial
позволяет работать с пространственными данными и алгоритмами, а scipy.stats
- со статистикой и распределениями вероятностей. Если вы работали с MATLAB, то вам не составит труда разобраться и со SciPy.
from scipy import stats
# Берем 30 значений из нормального распределения
# со средним = 25 и стандартным отклонением = 10
a = stats.norm.rvs(size=30, loc=25, scale=10)
# Рассчитываем эксцесс полученной выборки
stats.kurtosis(a)
Pandas
Библиотека Pandas также построена на основе NumPy. Она специализируется на работе с таблицами (DataFrame
) и временными рядами (Series
).
>>> import numpy as np
... import pandas as pd
... df = pd.DataFrame({
... 'name': ['Viktor', 'Ann', 'Kim'],
... 'age': [20, 35, np.nan],
... 'score': [81.17, 93.7, np.nan]
... })
... df
name age score
0 Viktor 20.0 81.17
1 Ann 35.0 93.70
2 Kim NaN NaN
Библиотека умеет обрабатывать таблицы не хуже полноценных табличных процессоров. Данные можно сортировать, фильтровать и группировать, загружать таблицы в разных форматах и объединять их.
>>> df[df['score'] > 90]
name age score
1 Ann 35.0 93.7
Pandas DataFrame
используют практически все программы на Python, работающие с таблицами. Также на них часто обучают и проверяют нейросети.
Заключение
Мы рассмотрели самые популярные математические библиотеки Python. Каждая из них по-своему полезна. Для несложных вычислений вам подойдет модуль Math, а для работы с математическими уравнениями и выражениями - SymPy. Библиотека NumPy позволяет эффективно работать с многомерными массивами, поэтому большинство модулей, требующих сложных вычислений зависит от нее. SciPy расширяет возможности NumPy, добавляя модули, специализированные на разных областях науки и математики, а Pandas позволяет работать с таблицами и временными рядами.
Навыки работы с этими библиотеками пригодятся для разнообразных вычислений, которые то и дело требуются в программах. Умение математически обрабатывать данные на Python очень важно сферах Data science и Machine learning. Возможно, сейчас самое время подтянуть алгебру?

Возможно будет интересно
🏆 Hello, world!
Мы вчера запустили новый www.pylot.me. Должны были в следующую среду, но запустили вчера.
Как практиковаться в Python?
Для улучшения качества знаний и повышения уровня программиста, необходим постоянный практикум. Где можно это организовать самостоятельно, и как практиковаться в Python?
Условные конструкции и сопоставление структурных шаблонов
Шпаргалка по условным конструкциям и сопоставлению структурных шаблонов