Вы считаете метрику по большому массиву чисел и выбираете NumPy вместо Python list. Почему операции вроде arr * 1.1 на ndarray обычно быстрее, чем цикл for по list?
A
ndarray хранит данные однородно и выполняет операции в оптимизированном C-коде (векторизация), минимизируя Python-циклы.BПотому что
list всегда хранит числа в непрерывной памяти, а ndarray — нет.CПотому что
ndarray по умолчанию выполняет вычисления на GPU без настроек.DПотому что
ndarray может хранить в одном массиве разные типы быстрее, чем list.Правильный ответ. NumPy ускоряет численные операции за счёт однородных данных и векторизованного исполнения.
Разбор
Главная идея NumPy: данные в ndarray обычно одного типа и лежат компактно, а операции выполняются внутри оптимизированных библиотек. Поэтому выражения вроде arr * 1.1 работают без явного Python-цикла for и часто быстрее для больших объёмов данных. Для аналитики это ключевой аргумент «когда нужен NumPy».
Проверь себя · 1/3разбор после ответа
Какое значение вернёт
arr.shape, если arr = np.array([[1, 2, 3], [4, 5, 6]])?Ещё вопросы по теме «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)`?
- Что вернёт `arr.shape`, если `arr = np.arange(6).reshape(2, 3)`?
- Все вопросы по «NumPy: основы» →