Научные библиотеки Python
Python является языком общего назначения, и средств научных вычислений в самом языке нет. Всё, ради чего его применяет физик, сосредоточено в библиотеках, и набор их невелик.
Порядок изложения следует зависимостям. NumPy предоставляет быстрый многомерный массив, на котором основано всё остальное, и вместе с pandas, предназначенным для работы с таблицами, обеспечивает хранение и первичную обработку данных. SciPy надстраивает над массивом численные методы: интегрирование, решение уравнений, оптимизацию, подгонку кривых, обработку сигналов, преобразование Фурье. Почти всё, что физику приходится вычислять, там уже реализовано и проверено. Далее рассматривается построение графиков, где Matplotlib остаётся основным инструментом, а HoloViews устроен иначе: в нём описывается, какие данные имеются, а не способ их отрисовки, и библиотека сама выбирает подходящий вид графика, делая его интерактивным.
Завершается раздел машинным обучением, для которого всё перечисленное служит фундаментом.
Устройство языка — объекты, коллекции, функции и классы — рассматривалось в разделе «Язык Python». Здесь язык считается известным.
Читателю, не знакомому с базовым синтаксисом, рекомендуется начать с электронной версии. В неё входят главы с основами языка, с NumPy и с Matplotlib, не вошедшие в печатное издание: их место заняли темы, которые нельзя прочитать в документации за десять минут. В печатном издании NumPy разобран в следующей главе вместе с pandas, а Matplotlib — в главе про визуализацию.
Почти весь код этой части набран в блокноте Jupyter — странице, разбитой на ячейки, где каждая ячейка выполняется отдельно и оставляет результат под собой, а имена, введённые в одной ячейке, сохраняются и доступны следующим. Строки, начинающиеся со знака процента, являются не кодом Python, а магическими командами IPython, оболочки, на которой работает блокнот. Одиночный % действует на строку, в которой стоит, так что %timeit sorted(data) измерит время этого вызова; двойной %%, поставленный первой строкой ячейки, распространяется на неё целиком, и %%timeit измерит всё написанное ниже. %load_ext подключает расширение IPython: с его помощью включается, например, построчный профилировщик, рассматриваемый в части «Ускорение расчётов». В обычном скрипте, запущенном через python file.py, ни одна из этих строк не работает, поэтому при переносе кода отсюда в файл их необходимо удалить.