0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Библиотека Numpy дает мощный и удобный высокоуровневый аппарат для работы с многомерными данными. Для работы с ними в Numpy разработана своя собственная структура данных - массив numpy.ndarray. Именно под эту структуру оптимизирована работа всего функционала библиотеки.</p>
1
<p>Библиотека Numpy дает мощный и удобный высокоуровневый аппарат для работы с многомерными данными. Для работы с ними в Numpy разработана своя собственная структура данных - массив numpy.ndarray. Именно под эту структуру оптимизирована работа всего функционала библиотеки.</p>
2
<p>В этом уроке познакомимся с тем, как создавать массив ndarray из стандартных типов данных языка Python и попробуем на практике решить ряд простых аналитических задач.</p>
2
<p>В этом уроке познакомимся с тем, как создавать массив ndarray из стандартных типов данных языка Python и попробуем на практике решить ряд простых аналитических задач.</p>
3
<h3>Структура данных библиотеки Numpy</h3>
3
<h3>Структура данных библиотеки Numpy</h3>
4
<p>Чтобы создать структуру numpy.ndarray, нужно конвертировать список list. Для конвертации из множества set требуется дополнительное приведение типа данных.</p>
4
<p>Чтобы создать структуру numpy.ndarray, нужно конвертировать список list. Для конвертации из множества set требуется дополнительное приведение типа данных.</p>
5
<p>Рассмотрим на таком примере:</p>
5
<p>Рассмотрим на таком примере:</p>
6
<p>А теперь разберем этот код подробнее. Сам пример показывает встроенную функциональность для создания структуры numpy.ndarray. Мы импортируем библиотеку Numpy, создаем короткий список значений simple_list, а затем конвертируем в массив my_first_ndarray. Для этого вызываем конструктор np.array() с объектами для конвертации.</p>
6
<p>А теперь разберем этот код подробнее. Сам пример показывает встроенную функциональность для создания структуры numpy.ndarray. Мы импортируем библиотеку Numpy, создаем короткий список значений simple_list, а затем конвертируем в массив my_first_ndarray. Для этого вызываем конструктор np.array() с объектами для конвертации.</p>
7
<p>С учетом примера выше, обратная конвертация в список происходит так:</p>
7
<p>С учетом примера выше, обратная конвертация в список происходит так:</p>
8
<p>Конвертация из списка Python - это самая популярная операция, с помощью которой создается структура numpy.ndarray.</p>
8
<p>Конвертация из списка Python - это самая популярная операция, с помощью которой создается структура numpy.ndarray.</p>
9
<p>Так происходит потому, что обмен данными между функциями и сервисами удобно производить в стандартных структурах данных языка. Другими словами, можно не вводить структуры данных сторонних библиотек и не усложнять программу.</p>
9
<p>Так происходит потому, что обмен данными между функциями и сервисами удобно производить в стандартных структурах данных языка. Другими словами, можно не вводить структуры данных сторонних библиотек и не усложнять программу.</p>
10
<p>Но при разработке сложных программ модуль numpy.ndarray может быть только частью общей структуры. В таких случаях используют стандартные типы данных языка для обмена данными между функциональными частями программ.</p>
10
<p>Но при разработке сложных программ модуль numpy.ndarray может быть только частью общей структуры. В таких случаях используют стандартные типы данных языка для обмена данными между функциональными частями программ.</p>
11
<p>В итоге порядок работы с данными при работе с Numpy выглядит следующим образом:</p>
11
<p>В итоге порядок работы с данными при работе с Numpy выглядит следующим образом:</p>
12
<p>Как правило, вычислительные и аналитические модули в виде входных данных ожидают списки значений. Всю оптимизацию они делают уже внутри себя в собственных абстракциях, невидимых извне. Это сделано для простоты интеграции.</p>
12
<p>Как правило, вычислительные и аналитические модули в виде входных данных ожидают списки значений. Всю оптимизацию они делают уже внутри себя в собственных абстракциях, невидимых извне. Это сделано для простоты интеграции.</p>
13
<h3>Допустимые типы данных</h3>
13
<h3>Допустимые типы данных</h3>
14
<p>Поговорим подробнее о типах элементов массива, которые можно использовать для numpy.ndarray. Продолжим работать с тем же примером и воспользуемся следующим методом:</p>
14
<p>Поговорим подробнее о типах элементов массива, которые можно использовать для numpy.ndarray. Продолжим работать с тем же примером и воспользуемся следующим методом:</p>
15
<p>Как и ожидалось, тип данных - int64. Необязательно ограничиваться только им:</p>
15
<p>Как и ожидалось, тип данных - int64. Необязательно ограничиваться только им:</p>
16
<p>Обратите внимание, что для экземпляра структуры numpy.ndarray нельзя использовать сразу несколько типов данных. Проще говоря, все элементы в массиве должны быть однотипные. Посмотрим, как конструктор сам определит тип данных при конвертации:</p>
16
<p>Обратите внимание, что для экземпляра структуры numpy.ndarray нельзя использовать сразу несколько типов данных. Проще говоря, все элементы в массиве должны быть однотипные. Посмотрим, как конструктор сам определит тип данных при конвертации:</p>
17
<p>Заметим, что ошибки при конвертации смешанного типа элементов массива не произошло. Конвертор просто привел все данные к строковому типу.</p>
17
<p>Заметим, что ошибки при конвертации смешанного типа элементов массива не произошло. Конвертор просто привел все данные к строковому типу.</p>
18
<h2>Как Numpy работает на практике</h2>
18
<h2>Как Numpy работает на практике</h2>
19
<p>Функциональность библиотеки Numpy настолько интуитивна, что уже сейчас можно решить простую аналитическую задачку.</p>
19
<p>Функциональность библиотеки Numpy настолько интуитивна, что уже сейчас можно решить простую аналитическую задачку.</p>
20
<p>Представим продажи ноутбуков в магазине за одну неделю:</p>
20
<p>Представим продажи ноутбуков в магазине за одну неделю:</p>
21
<p>На практике такие данные обычно хранятся в табличном виде в базе данных. Чтобы упростить пример, мы пропустили этап выгрузки - подразумевается, что данные приходят в вычислительный модуль уже в виде списка значений.</p>
21
<p>На практике такие данные обычно хранятся в табличном виде в базе данных. Чтобы упростить пример, мы пропустили этап выгрузки - подразумевается, что данные приходят в вычислительный модуль уже в виде списка значений.</p>
22
<p>Поработаем с данными с помощью библиотеки Numpy:</p>
22
<p>Поработаем с данными с помощью библиотеки Numpy:</p>
23
<p>Попробуем найти день недели с самыми низкими продажами. Опыт работы с Python подсказывает, что метод будет называться min() или minimum(). Найдем минимальное количество продаж и заодно день недели, в который оно совершено:</p>
23
<p>Попробуем найти день недели с самыми низкими продажами. Опыт работы с Python подсказывает, что метод будет называться min() или minimum(). Найдем минимальное количество продаж и заодно день недели, в который оно совершено:</p>
24
<p>Чтобы найти наибольшее количество продаж, достаточно поменять одну функцию:</p>
24
<p>Чтобы найти наибольшее количество продаж, достаточно поменять одну функцию:</p>
25
<p>На практике часто анализ не ограничивается только одной неделей продаж и одним магазином. В этом случае набор данных представлен в виде<strong>списка списков элементов</strong>- это уже двумерная структура, которая в математике называется матрицей.</p>
25
<p>На практике часто анализ не ограничивается только одной неделей продаж и одним магазином. В этом случае набор данных представлен в виде<strong>списка списков элементов</strong>- это уже двумерная структура, которая в математике называется матрицей.</p>
26
<p>В Numpy реализация инициализации массивов и функций работы с ними не зависит от размерности данных, что существенно упрощает разработку.</p>
26
<p>В Numpy реализация инициализации массивов и функций работы с ними не зависит от размерности данных, что существенно упрощает разработку.</p>
27
<p>В современных библиотеках можно применять одну и ту же функцию к различным типам данных. Рассмотрим это на примере, похожем на предыдущий. Найдем день с самыми низкими доходами во всей сети магазинов. Рассмотрим недельные продажи в четырех магазинах:</p>
27
<p>В современных библиотеках можно применять одну и ту же функцию к различным типам данных. Рассмотрим это на примере, похожем на предыдущий. Найдем день с самыми низкими доходами во всей сети магазинов. Рассмотрим недельные продажи в четырех магазинах:</p>
28
<p>Мы ожидаем, что функционально все должно быть реализовано похожим образом. Давайте в этом убедимся, взглянув на код:</p>
28
<p>Мы ожидаем, что функционально все должно быть реализовано похожим образом. Давайте в этом убедимся, взглянув на код:</p>
29
<p>В приведенном примере метод min() находит минимальный элемент среди всех значений массива.</p>
29
<p>В приведенном примере метод min() находит минимальный элемент среди всех значений массива.</p>
30
<p>Большинство функций в Numpy реализованы так, что методы и функции выполняют одинаковые операции, вне зависимости от типа данных на входе.</p>
30
<p>Большинство функций в Numpy реализованы так, что методы и функции выполняют одинаковые операции, вне зависимости от типа данных на входе.</p>
31
<p>В программировании такой подход называется<strong>полиморфизмом</strong>. Он упрощает разработку и делает код более простым для анализа и поддержки.</p>
31
<p>В программировании такой подход называется<strong>полиморфизмом</strong>. Он упрощает разработку и делает код более простым для анализа и поддержки.</p>
32
<h3>Выводы</h3>
32
<h3>Выводы</h3>
33
<p>Сегодня мы познакомились с основной структурой данных библиотеки Numpy - массивом numpy.ndarray.</p>
33
<p>Сегодня мы познакомились с основной структурой данных библиотеки Numpy - массивом numpy.ndarray.</p>
34
<p>В работе с ним мы используем указанный тип данных - это обусловлено оптимизацией работы функций внутри библиотеки. У Numpy понятный интерфейс для конвертации типа данных list из стандартной библиотеки Python.</p>
34
<p>В работе с ним мы используем указанный тип данных - это обусловлено оптимизацией работы функций внутри библиотеки. У Numpy понятный интерфейс для конвертации типа данных list из стандартной библиотеки Python.</p>
35
<p>Новые знания мы сразу закрепили на практической задаче - вычислили день с самыми низкими доходами в сети магазинов. Эта задача показывает, насколько Numpy упрощает работу с входными данными разной размерности.</p>
35
<p>Новые знания мы сразу закрепили на практической задаче - вычислили день с самыми низкими доходами в сети магазинов. Эта задача показывает, насколько Numpy упрощает работу с входными данными разной размерности.</p>