Урок курса

NumPy для начинающих: массивы, форма и вычисления

NumPy и pandas: практический тренажёр

NumPy — базовая библиотека Python для числовых вычислений. Она хранит данные в однородных многомерных массивах ndarray и выполняет операции сразу над целыми массивами. NumPy лежит в основе pandas, scikit-learn и многих библиотек для анализа данных.

Ниже — маршрут для начинающего: от создания массива до индексации, изменения формы и вычислений по осям. Ссылки ведут на бесплатные уроки с примерами и задачами.

Чем массив NumPy отличается от списка Python

Список может содержать объекты разных типов. Массив NumPy обычно хранит элементы одного dtype и имеет прямоугольную форму. Благодаря этому библиотека выполняет вычисления компактно и без Python-цикла над каждым элементом.

import numpy as np

temperatures = np.array([18.5, 20.0, 21.5, 19.0])
adjusted = temperatures + 1.5

Выражение temperatures + 1.5 прибавляет число ко всем элементам. Такой подход называется векторизацией.

Маршрут изучения NumPy

1. Поймите устройство ndarray

У массива есть число измерений ndim, форма shape, общее количество элементов size и тип данных dtype. Эти свойства помогают заранее понять, какие операции допустимы. Начните с урока «ndarray: создание и свойства».

matrix = np.array([
    [10, 20, 30],
    [40, 50, 60],
])

print(matrix.shape)  # (2, 3)
print(matrix.ndim)   # 2

2. Выберите подходящий конструктор

np.arange удобен для последовательности с заданным шагом, np.linspace — для фиксированного количества равномерно расположенных точек, np.zeros и np.ones — для массивов заданной формы. Разница и типичные пограничные случаи разобраны в уроке «arange, linspace и zeros».

hours = np.arange(0, 24, 3)
grid = np.linspace(0.0, 1.0, num=5)
canvas = np.zeros((3, 4))

3. Научитесь менять форму

reshape меняет представление формы без изменения количества элементов. transpose переставляет оси. Ошибка возникает, если новая форма требует другого количества значений. Практика находится в уроке «NumPy reshape и transpose».

values = np.arange(12)
table = values.reshape(3, 4)
columns_as_rows = table.T

4. Освойте индексацию и срезы

В двумерном массиве сначала указывается строка, затем столбец: array[row, column]. Срезы позволяют выбирать диапазоны без ручного цикла. Подробный разбор находится в уроке «Индексация и срезы в NumPy».

first_row = table[0, :]
second_column = table[:, 1]
bottom_right = table[-1, -1]

5. Разберитесь с осями и broadcasting

Параметр axis указывает, вдоль какого измерения выполняется операция. Для матрицы axis=0 обычно сворачивает строки и оставляет результат по столбцам, а axis=1 сворачивает столбцы и возвращает результат по строкам.

column_totals = table.sum(axis=0)
row_averages = table.mean(axis=1)

Broadcasting позволяет выполнять операции над массивами совместимых форм. Полезно не запоминать отдельные примеры, а сравнивать размеры справа налево: они должны совпадать либо один из них должен быть равен единице.

Типичные ошибки новичков

  • Использовать arange с дробным шагом и ожидать точного включения правой границы.
  • Путать номер оси с направлением, которое визуально видно в таблице.
  • Менять срез и не учитывать, что он может быть представлением исходного массива.
  • Смешивать массивы несовместимых форм и не проверять правила broadcasting.
  • Оставлять целочисленный dtype, когда расчёт должен сохранять дробную часть.

Что изучать после основ

После массивов, формы и индексации переходите к булевым маскам, агрегатам, broadcasting, матричным операциям, обработке NaN, сортировке и различию между view и copy. В бесплатном курсе NumPy и pandas эти темы связаны с последующей работой в DataFrame и закрепляются задачами с автоматической проверкой.

Продолжить с проверкой и прогрессом

Откройте интерактивный раннер с заданиями урока.

Перейти к интерактивному уроку