Книга про Python. Прогресс за январь 2025 года

Закончился еще один месяц, а это значит, что пора рассказать о том, как за месяц продвинулось написание книги про Python. Раньше я беспокоился по поводу того, что уже выхожу за предварительно намеченные рамки по страницам. В конце прошлого месяца я неумолимо приближался к обещанным 500 страницам, а впереди остается еще много глав. Поговорил по этому поводу с представителем издательства, посчитал, что если дальше все пойдет таким темпом, то книга будет объемом чуть меньше 700 страниц. Оказалось, что это допустимо, и после этого я пообещал постараться не превышать 700 страниц,а это значит, не придется выкидывать никакие главы, и это хорошо.

В январе в первом приближении написал текст для трех глав. Эти и все последующие главы будут посвящены уже не самому языку Python, а библиотекам, которые используются в научной и инженерной деятельности.

Первая из таких глав посвящена библиотеке NumPy, и я в ней подробно описываю особенности работы с массивами NumPy — способы создания, что такое векторизация и broadcasting, как изменять форму массивов. Потом пишу про разные хитрости, связанные с индексацией и получением срезов, показываю, что NumPy по возможности не копирует данные, а возвращает указатель на имеющиеся данные, даже когда это не очевидно. Но совсем в низкоуровневое представление массивов не вдаюсь, это уже тема для более продвинутой публики. И заканчиваю главу булевыми массивами и фильтрацией элементов массивов по условию.

Следующая глава посвящена форматам файлов, которые используются в научных областях. Начинаю с банального текстового формата, когда данные представлены в виде столбцов чисел. В такой формат могут экспортировать данные многие научные программы, а NumPy умеет писать и читать такой формат с помощью функций writetxt() и loadtxt(). У меня на работе это вообще основной формат для переноса данных между разными приложениями. После этого коротко говорю о формате CSV с небольшим примером, но отсылаю к будущей главе про Pandas, потому что Pandas более аккуратно умеет читать этот формат. После этого перехожу к разделам про форматы, предназначенные для хранения больших данных. Сначала рассказываю о старом и сложном формате HDF5, который позволяет хранить в одном файле целую иерархию многомерных данных, добавляя к ним еще аннотации (например, когда эти данные были получены, при каких условиях и т.п.). Вообще HDF5 — это настолько сложный формат, что он по сути повторяет возможности файловой системы, в нем даже есть жесткие и мягкие ссылки на данные. Он заточен на параллельные запись и чтение, но эта тема далеко выходит за рамки книги. После этого коротко упоминаю формат NetCDF, построенный поверх HDF5, но с более простыми возможностями. И в завершение говорю о достаточно молодом формате Zarr, который по сути представляет собой папку с файлами, которые хранят кусочки больших данных. Про этот формат тоже рассказываю достаточно поверхностно, но с небольшими примерами кода.

В следующей главе я начал рассказывать про библиотеку Matplotlib, предназначенную для построения графиков. Эта глава посвящена основным функциям для построения графика вида y = f(x) и настройкам внешнего вида — стили линий, способы выбора цвета, масштаб по осям, создание легенды, рисование нескольких графиков в одном окне. Все завершается разделом про более объектно-ориентированный подход, когда используются методы объектов, которые отвечают за каждый элемент графика — окно в целом, кривые на графике, оси, легенда, надписи и т.д. Все то, о чем я писал у себя на сайте в серии статей про Matplotlib. Изначально я думал, что я буду многое сдирать оттуда, хотя бы примеры, но в процессе написания этой главы оказалось, что логичнее все сделать по-другому.

В следующей главе, которую уже начал писать, будет продолжение про библиотеку Matplotlib, в ней я планирую рассказать о том, как строить разные виды графиков. Но об этом я надеюсь написать через месяц.

Итого, на сегодня у меня написано 533 страницы. Удивительно, как удается поддерживать практически линейный рост количества страниц (см. картинку). Но меня уже начинает беспокоить, что для того, чтобы отдать текст книги к обещанному сроку (конец мая), мне надо будет это все еще хотя бы пару раз перечитать и выправить.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 1, средняя оценка: 5,00)
Загрузка...

Leave a comment

Subscribe without commenting