NumPy используют, когда нужно строить графики, анализировать статистику или готовить данные для моделей машинного обучения.
Вместо громоздких циклов — лаконичные решения, которые работают быстрее и понятнее. Рассказываем основы работы.
Что такое NumPy и зачем она нужна
NumPy, или Numerical Python, — это библиотека Python, в которой есть:
- мощный N-мерный массив;
- высокоуровневые функции;
- инструменты для интеграции кода C/C++ и Fortran.
А еще — это эффективный многомерный контейнер общих данных. С помощью этой библиотеки можно определять произвольные типы.
Библиотека NumPy — это база данных с исходным кодом в открытом виде. Автор — проект SciPy. Библиотека помогает в разных задачах. Например:
linalg — реализация решений из линейной алгебры.
random — реализация функций для бесперебойной работы со случайными величинами.
fft — реализация прямого и обратного преобразования Фурье.
Научитесь создавать сервисы на языке Python и освойте профессию разработчика за десять месяцев. Пройдите курс Skypro «Python-разработчик» — вас ждут новая работа, диплом установленного образца, портфолио с семью проектами на GitHub и полезные знакомства. Программа обучения соответствует требованиям к вакансиям начинающих Python-разработчиков на 100%.

Где используется
NumPy — это библиотека, с которой начинают почти все, кто работает с анализом данных. Она помогает быстро обрабатывать большие массивы чисел и выполнять сложные математические операции в пару строк кода.
NumPy используют в инженерии, биологии, экономике и так далее. А еще она лежит в основе других библиотек. NumPy как алфавит для работы с данными. Если его знать, проще освоить другие библиотеки, например:
- Pandas — таблицы как в Excel. Основана на NumPy.
- TensorFlow — обучает нейросети, а NumPy помогает готовить данные.
- PyTorch — машинное обучение. Синтаксис похож на NumPy, часто работают вместе.
Обзор NumPy
Есть несколько базовых понятий и функций NumPy, которые обязательно нужно изучить, чтобы свободно пользоваться библиотекой.
Как создавать массивы
Прежде чем переходить к созданию массивов, полезно понять, как они устроены. На картинке ниже показаны три типа массивов: одномерный, двумерный и трёхмерный. Это поможет представить, как данные хранятся в памяти.
- Одномерный массив — просто последовательность значений, выстроенных в линию.
- Двумерный — как таблица со строками и столбцами.
- Трехмерный — уже напоминает куб, состоящий из таких таблиц.
Вариантов несколько:
-
- Переделать список в NumPy-массивы
X = np.array([[7, 8, 9], [10, 11, 12]])
X
Out:
array([[7, 8, 9],
[10, 11, 12]])
- Сделать копию.
Y = X.copy()
Y
Out:
array([[7, 8, 9],
[10, 11, 12]])
- Сделать нулевой или единичный вариант определенного размера.
Нулевой:
A = np.zeros((2, 3))
A
Out:
array([[0., 0., 0.],
[0., 0., 0.]])
Единичный:
B = np.ones((3, 2))
B
Out:
array([[1., 1.],
[1., 1.],
[1., 1.]])
- Использовать примеры из библиотеки.
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.zeros_like(A)
B
Out:
array([[0, 0, 0],
[0, 0, 0]])
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.ones_like(A)
B
Out:
array([[1, 1, 1],
[1, 1, 1]])
Если нужен двумерный квадратный, то можно сделать его единичной матрицей диагонального типа:
A = np.eye(3)
A
Out:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
Сделать от From (вкл) до To (не вкл) с шагом Step:
From = 3.5
To = 6
Step = 0.5
A = np.arange(From, To, Step)
A
Out:
array([3.5, 4. , 4.5, 5. , 5.5])
Изначально from = 0, step = 1, из-за этого есть вариант с одним параметром, который интерпретируется как To:
A = np.arange(3)
A
Out:
array([0, 1, 2])
Либо с двумя — как From и To:
A = np.arange(20, 26)
A
Out:
array([20, 21, 22, 23, 24, 25])
В третьем методе размеры передавались одним параметром (кортеж размеров). Вторым (в способах № 3 и № 4) можно указать желаемый тип элементов.
A = np.zeros((2, 3), 'int')
A
Out:
array([[0, 0, 0],
[0, 0, 0]])
B = np.ones((3, 2), 'complex')
B
Out:
array([[1.+0.j, 1.+0.j],
[1.+0.j, 1.+0.j],
[1.+0.j, 1.+0.j]])
Благодаря методу astype массив приводят к другому типу:
A = np.ones((3, 2))
B = A.astype('str')
B
Out:
array([['1.0', '1.0'],
['1.0', '1.0'],
['1.0', '1.0']], dtype='<U32')
Каждый тип есть в словаре sctypes:
np.sctypes
Out:
{'int': [NumPy.int8, NumPy.int16, NumPy.int32, NumPy.int64],
'uint': [NumPy.uint8, NumPy.uint16, NumPy.uint32, NumPy.uint64],
'float': [NumPy.float16, NumPy.float32, NumPy.float64, NumPy.float128],
'complex': [NumPy.complex64, NumPy.complex128, NumPy.complex256],
'others': [bool, object, bytes, str, NumPy.void]}
- Переделать список в NumPy-массивы
Базовые функции
Есть такой объект:
a = np.array([1,2,3], dtype='int32')
print(a)
[1 2 3]
Для определения количества измерений есть функция ndim:
print(a.ndim)
1
Здесь одномерный массив или вектор. Но для двумерного результат оказался бы другим:
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b.ndim)
2
Для подсчета количества строк и столбцов есть функция shape:
print(a.shape)
(3, )
Объяснение результата: вектор — это одномерный массив. У него в библиотеке NumPy есть только строки или элементы, поэтому функция shape выдала число 3.
С двумерными массивами ситуация понятнее:
print(b.shape)
(2, 3)
В b — две строки и три столбца.
Для остальных массивов функция shape будет добавлять дополнительные цифры в кортеже через запятую:
с = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(c.shape)
(2, 2, 3)
Читается это так: в объекте два трехмерных массива с двумя строками и тремя столбцами.
Кроме размерностей, указывают тип элементов через функцию dtype. Если не присваивать тип элементам вручную, по умолчанию будет задан int32. Количество элементов указывают через функцию size.
Функции itemsize и nbytes показывают, что количество байт в памяти занимает один элемент, а еще — какой объем байт во всём массивe NumPy. Один элемент занимает три байта, а весь объект b из девяти элементов — 3 * 9 = 27 байт.
Научиться применять эти и другие функции в разработке можно на курсе Skypro «Python-разработчик». За несколько месяцев изучите базовую теорию и отработаете новые навыки на практических заданиях. Во время всего обучения студентов поддерживают опытные наставники и кураторы. А специалисты центра карьеры помогают составить резюме и подготовиться к собеседованиям.
Доступ к элементам
С NumPy-массивами можно смотреть элементы по отдельности или в сумме. Еще они могут изменить значение внутри самого массива.
✔️ Помните, что заменяется как отдельный элемент, так и любые последовательности элементов. Для этого есть специальная конструкция с полноценной и упрощенной версиями.
Создание специальных массивов
NumPy может создавать массивы с уже забитыми ячейками — нулями или единицами.
- Массив NumPy из нулей через функцию zeros
a = np.zeros((2, 2))
print(a)
[[0. 0.]
[0. 0.]]
Размер задается кортежем (2, 2). Если указать без скобок, будет ошибка:
a = np.zeros(2, 2)
Traceback (most recent call last):
File "", line 1, in
TypeError: Cannot interpret '2' as a data type]
Без скобок NumPy расценивает второй элемент как тип данных, который указывают для параметра dtype.Если указать одно число, получится вектор размером в два элемента. Тогда дополнительные скобки не нужны:a = np.zeros(2)
print(a)
[0. 0.]
- Стандартно элементам присваивается тип float64. Это дробные числа, которые занимают в памяти 64 бита, или 8 байт. Чтобы получить целые числа, укажите это в параметре dtype через запятую:
a = np.zeros(2, dtype='int32')
print(a)
[0 0]
- Массив NumPy из единиц через функцию ones:
b = np.ones((4, 2, 2), dtype='int32')
print(b)
[[[1 1]
[1 1]]
[[1 1]
[1 1]]
[[1 1]
[1 1]]
[[1 1]
[1 1]]]
Это трехмерный массив numpy из четырех двумерных, в каждом из которых две строки и два столбца.
Элементы — с типом int32. - Массив NumPy из произвольных чисел, отличных от нуля и единицы, через функцию full:
c = np.full((2, 2), 5)
print(c)
[[5 5]
[5 5]]
Сначала указали размер массива через кортеж — (2, 2), потом число, которым заполним элементы, — 5. - Массив NumPy случайных чисел через функции random.rand:
d = np.random.rand(3, 2)
print(d)
[[0.76088962 0.14281283]
[0.32124888 0.34894434]
[0.66903093 0.72899792]]
NumPy генерирует случайные числа в диапазоне от нуля до единицы с восемью знаками после запятой. Размер задается не через кортеж (3, 2), а через запятую, потому что в функции random.rand нет параметра dtype.
Массив случайных чисел через функцию random.randint:
e = np.random.randint(-5, 10, size=(4, 4))
print(e)
[[ 3 1 -4 3]
[ 0 -2 5 3]
[ 5 -1 9 2]
[ 0 -4 9 -2]]
- Единичная матрица используется для линейной алгебры. По диагонали такой матрицы элементы равны единице, а остальные — нулю. Ее создают через функцию identity или eye:
i = np.identity(4)
print(i)
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
Математические операции
Массивы из NumPy можно использовать по-разному. Главное их преимущество — в поддержании стандартных арифметических операций. Например, в NumPy Python доступны сложение, деление, вычитание. Эта библиотека вычисляет синусы и многое другое из линейной алгебры, математической статистики.
Копирование и организация
Если в NumPy вы присвоите массив другой переменной, то получится ссылка на этот самый массив. Если в какой-то момент работы с программой нужно создать независимую копию, то для этого есть функция copy. А чтобы изменить объем и размер массива — функция reshape.
Дополнительные возможности
Можно использовать функцию накладывания или наслоения одних массивов поверх других: vstack и hstack.
Библиотека numpy может прочесть файлы с жесткого диска или данные из файла. Булевы выражения — возможность пользователям библиотеки получать информацию о том, какие элементы отвечают определенным условиям.
Как установить NumPy
Можно использовать платформу Anaconda: там большой выбор разных библиотек, которые подойдут для работы Python.
- Перейдите на официальный сайт и скачайте последнюю версию софтов.
- Откройте установщик и установите программы по инструкции.
- Когда Python установится, откройте консоль и введите команду python3 для запуска интерпретатора Python.
В Anaconda есть много полезного — NumPy, SciPy, Pandas, потому дополнительных установок не требуется. Достаточно проверить, что нужная библиотека работает. Для этого введите команды: import NumPy as np, потом a = np.array ([1,2,3]). Выведите значение переменной a, чтобы убедиться, что всё работает: print (a).
Можно установить библиотеки numpy без лишних файлов через интегрированного питоновского менеджера пакетов PIP.
Для этого нужно:
- установить Python;
- открыть программу и перейти во вкладку Downloads;
- выбрать место установки и согласиться с пунктами;
- потом скачать библиотеку NumPy.
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Как подключить NumPy
NumPy подключается в проект после установки через стандартный менеджер пакетов. Обычно ее импортируют с коротким именем, чтобы упростить работу с функциями библиотеки numpy.
После этого становится доступна работа с массивами, математическими операциями, матрицами и другими числовыми структурами. Это базовый инструмент для анализа данных, научных расчетов и подготовки данных для моделей машинного обучения.
Эту библиотеку часто используют в технике и исследованиях — у нее простой интерфейс и всё работает быстро. Настроить можно за пару минут, а возможностей у нее — как у серьезных профессиональных инструментов.
Главное о библиотеке NumPy
- NumPy — это библиотека для Python, которая помогает удобно работать с числами и данными.
- Чаще всего встречается в работе с анализом данных, машинном обучении и научных проектах.
- Упрощает работу с массивами. Вместо громоздких циклов — простые и быстрые решения.
- Поддерживает базовые математические действия и работу со случайными числами.
- Устанавливается за пару минут — через Anaconda или PIP.
- Подходит для новичков, но при этом используется и в серьезных проектах.
- Хорошая база для изучения других библиотек — Pandas, TensorFlow и PyTorch.
Добавить комментарий