Пусть a = np.array([[1], [2], [3]]) и b = np.array([10, 20, 30, 40]). Какой будет форма результата a + b?
A(3, 1)
B(4,)
C(3, 4)
DБудет ошибка broadcasting
Правильный ответ. Массив формы (3, 1) и вектор формы (4,) broadcastятся в матрицу формы (3, 4).
Разбор
Форма (3, 1) означает «3 строки и 1 столбец». При сложении с вектором (4,) NumPy приводит формы справа налево: (3, 1) и (4,) становятся совместимыми как (3, 1) и (1, 4), после чего broadcasting даёт результат (3, 4). Это полезно для построения «сетки» значений без циклов.
Проверь себя · 1/3разбор после ответа
Пусть
arr = np.array([[1, 2], [3, 4]]). Что вернёт np.sum(arr) без указания axis?Ещё вопросы по теме «NumPy: основы»
- После `import numpy as np` вы сравниваете операции над Python `list` и NumPy `ndarray`. Что верно для `lst * 2` и `arr * 2`, где `lst = [1, 2, 3]`, а `arr = np.array([1, 2, 3])`?
- Какое значение вернёт `arr.shape`, если `arr = np.array([[1, 2, 3], [4, 5, 6]])`?
- Что будет результатом выражения `arr + 10`, если `arr = np.array([1, 2, 3])`?
- Пусть `x = np.array([[1, 2], [3, 4]])`. Чему равен результат `np.sum(x, axis=0)`?
- Вы считаете метрику по большому массиву чисел и выбираете NumPy вместо Python `list`. Почему операции вроде `arr * 1.1` на `ndarray` обычно быстрее, чем цикл `for` по `list`?
- Все вопросы по «NumPy: основы» →