Думаю, ни для кого не секрет, что Python может все или почти все. Например, для построения графиков можно использовать matplotlib, для анализа и манипуляции данными можно использовать библиотеку pandas, а для работы с массивами была разработана библиотека numpy. А есть ли библиотека, которая может выполнять различные математические операции, например, интегрирование и дифференцирование, обработка изображений и сигналов, расчет статистических распределений и функций? Конечно есть, это библиотека SciPy. Предлагаю поговорить об этом по подробнее. SciPy (сокращение от Scientific Python, или научный Python) – библиотека, которая является расширением библиотеки NumPy и предназначена для выполнения сложных инженерных, статистических и научных расчетов, а так же для анализа данных и построения графиков. Первое отличие – по типу выполняемых операций. NumPy выполняет стандартные операции, такие как сортировка, индексирование, а так же элементарные операции, связанные с типом данных массива. SciPy используется для выполнения сложных операций, например, расчет алгебраических функций или различных числовых алгоритмов. Второе отличие – методы и функции, которые содержатся в библиотеках. NumPy содержит немалое количество функций и методов для решения задач линейной алгебры, а также расчета преобразования Фурье и обработки сигналов и изображений, однако они неполноценные. В SciPy, наоборот, эти функции и методы реализованы в полном объеме, и их гораздо больше. Третье отличие – концепция массивов. Массивы из библиотеки NumPy — это многомерные массивы объектов, которые имеют одинаковый тип, то есть они однородны или гомогенны. В SciPy концепция массивов немного другая, поскольку она более функциональна, и не имеет ограничений на однородность. То есть массивы SciPy могут быть как гомогенными, так и гетерогенными. Четвертое отличие – язык, написания библиотек и скорость. Библиотека NumPy написана на языке C и как следствие имеет более высокую скорость вычислений, однако за нее приходится платить функциональностью библиотеки. Библиотека SciPy написана на языке Python и поэтому имеет более низкую скорость выполнения, однако низкая скорость компенсируется предоставляемой функциональностью. Возможности библиотеки определятся, функциями и методами, которые в ней реализованы. Сама библиотека SciPy, состоит из нескольких модулей, реализованных для решения определенного типа задач, например, linalg – модуль, содержащий методы линейной алгебры, или optimize, который реализует инструменты оптимизации. Состав библиотеки SciPy можно получить при помощи выполнения следующего кода. Перейдем от слов к делу и посмотрим код. Предлагаю в качестве демонстрации возможностей библиотеки посмотреть работу некоторых пакетов. Integrate. Данный пакет, позволяет проводить численное интегрирование: рассчитывать определенные интегралы, решать обыкновенные дифференциальные уравнения и пр. (42.66666666666667, 4.736951571734002e-13) Отмечу, что в пакете integrate помимо функции quad(), которая возвращает кортеж из двух элементов, первый — значение интеграла, второй — точность вычисления, реализованы другие методы нахождения интегралов. Вот некоторые из них: trapz() (метод трапеций), sims() (метод Симпсона), romb() (метод Ромберга) и т.д. Io. Данный пакет предоставляет функции для работы и управления файлами самых разных форматов, включая MATLAB, файлы IDL, Matrix Market, Fortran, и даже WAV. Ниже рассмотрим кусок кода, который покажет каким образом можно добавить данные из файла формата MATLAB. Stats. Данный модуль, содержит в себе большое количество вероятностных распределений, а также растущую библиотеку статистических функций. Для демонстрации возможностей рассматриваемого модуля, обратимся к коду ниже. В нем мы проведем проверку на нормальное распределение.  В основе проверки на "нормальность" лежит проверка гипотез. Для проверки будем использовать две гипотезы. Истинная гипотеза говорит о нормальном распределении данных, а ложная подтверждает отсутствие нормального распределения. Для проведения проверки будем использовать критерией Шапиро-Уилка. В результате проверки мы получим значение вычисленной статистики и p-значение. Для определения принадлежности результата к гипотезе, будем использовать критический параметр альфа со значением 0,05. В случае, если p-значение будет меньше 0,05, можно утверждать, что гипотеза ложная и данные не имею нормального распределения, иначе данные распределены нормально. Для проверки будем использовать набор данных с информацией о продаже видеоигр по всему миру с сайта Kaggle по ссылке: https://www.kaggle.com/datasets/gregorut/videogamesales?resource=download. Проверяемым атрибута выберем EU_Sales (продажи в Европе): Stats=0.256, pValue=0.000 Данные не имеют нормального распределения В заключение хочется сказать, что представленная информация в данной статье составляет лишь малую верхушку айсберга от общего объема информации. В данной статье мы рассмотрели, основные моменты связанные с библиотекой SciPy, рассмотрели возможности некоторых модулей. Более подробную и детальную информацию о данной библиотеке можно найти на официальном сайте документации, по ссылке: https://scipy.org/.  Профессиональное сообщество