Нашли ошибку?
Скачать чистый
урок 2 из 5≈ 15 минупражнения: 0 из 4

Двумерные массивы

Таблица чисел как массив из строк и столбцов — форма shape, число измерений ndim, число элементов size.

Python запустится при первом выполнении

Данные часто похожи на таблицу: продажи трёх магазинов по четырём кварталам, оценки учеников по предметам, температура по дням и часам. Такую таблицу NumPy хранит как двумерный массив: у него есть строки и столбцы. Создаётся он из списка списков — каждый внутренний список становится строкой:

[ ]Продажи трёх магазинов по кварталам
import numpy as np

sales = np.array([
    [120, 135, 150, 170],   # магазин 1: кварталы 1–4
    [ 90, 100,  95, 130],   # магазин 2
    [200, 180, 210, 250],   # магазин 3
])
sales
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
array([[120, 135, 150, 170],
       [ 90, 100,  95, 130],
       [200, 180, 210, 250]])

Форма

Главное свойство массива — форма (shape): сколько элементов по каждому направлению. У таблицы выше 3 строки и 4 столбца, форма — (3, 4): сначала строки, потом столбцы. shape — атрибут (свойство массива, его просто читают), это не метод, и скобки после него не пишут:

[ ]shape, ndim, size
print(sales.shape)
print(sales.ndim, sales.size, len(sales))
print(np.arange(5).shape)
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
(3, 4)
2 12 3
(5,)
  • ndim — число измерений (осей): у простого ряда чисел 1, у таблицы 2.
  • size — сколько всего элементов: 3 × 4 = 12.
  • len у таблицы — число строк.

У одномерного массива форма из одного числа: (5,). Запятая здесь — не опечатка, так Python записывает кортеж (tuple) из одного элемента.

[ ]Упражнение 1Оценки группы решено

Создайте двумерный массив scores: оценки трёх учеников по трём предметам. Первый ученик: 5, 4, 5; второй: 3, 4, 4; третий: 5, 5, 4 — каждый ученик в своей строке.

scores = ...

[ ]Упражнение 2Размер таблицы решено

Сохраните в rows и cols число строк и столбцов массива sales, а в cells — общее число элементов.

rows = ...
cols = ...
cells = ...

Вопрос

Какая форма у np.array([[1, 2, 3], [4, 5, 6]])?

Строки должны быть одной длины

Таблица прямоугольная: во всех строках одинаковое число элементов. Если длины разные, NumPy откажется делать двумерный массив:

[ ]Строки разной длиныошибка: ValueError
np.array([[1, 2, 3], [4, 5]])
Ошибкасохранённый · нажмите «Выполнить», чтобы получить свой
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.

Пустая таблица нужного размера

np.zeros, np.ones и np.full умеют делать и таблицы: вместо числа передают форму — кортеж (строки, столбцы). Двойные скобки нужны: внутренние — это и есть кортеж формы.

[ ]Таблица из нулей
np.zeros((2, 3))
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
array([[0., 0., 0.],
       [0., 0., 0.]])
[ ]Упражнение 3Шахматная доска решено

Создайте массив board — таблицу 8 × 8 из нулей.

board = ...

Итоги по всей таблице

Методы sum, mean, max и другие работают и с таблицей — пока что по всем элементам сразу. Считать по строкам и по столбцам отдельно научимся в модуле об осях.

[ ]Сумма всех продаж
print(sales.sum())
print(sales.max())
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
1830
250
[ ]Упражнение 4Средняя оценка решено

Посчитайте среднюю оценку по всей таблице scores и сохраните в avg_score.

avg_score = ...

Итоги

  • Двумерный массив — таблица; создаётся из списка списков одинаковой длины.
  • shape — форма (строки, столбцы), ndim — число измерений, size — число элементов, len — число строк.
  • np.zeros((3, 4)) — таблица нужной формы; форму передают кортежем.

Подробнее в справочнике

Нашли ошибку?