Почему при работе с числовыми данными для аналитики часто предпочитают ndarray вместо Python list?
A
ndarray обычно однороден по типу (dtype), хранит данные компактнее и поддерживает быстрые поэлементные операцииB
ndarray хорош тем, что хранит значения разных типов вперемешку быстрее, чем list, без накладных расходов на упаковку каждого элементаCПотому что
list поддерживает векторные операции и broadcasting, а ndarray для этого нужно дополнительно настраивать через сторонние пакетыDПотому что
ndarray автоматически хранит данные на диске, а не в памяти, и сам подгружает только нужные блоки во время вычисленийПравильный ответ. Однородность типов и компактное хранение делают
ndarray удобным для численной аналитики.Разбор
Python list может содержать разные типы, но это неоптимально для больших числовых массивов. NumPy ndarray обычно имеет один dtype, что позволяет хранить данные плотнее и выполнять векторные операции быстрее. Утверждение про разные типы в ndarray ошибочно: однородность типов — это плюс, а не минус. Broadcasting поддерживает именно ndarray, а не list. На диск массив сам не уходит — это работа специальных библиотек, а не базового NumPy.
Проверь себя · 1/3разбор после ответа
Пусть
arr = np.array([[10, 20, 30], [40, 50, 60]]). Что вернёт выражение arr[:, 1]?Ещё вопросы по теме «NumPy: основы»
- После `import numpy as np` вы сравниваете операции над списком Python `list` и массивом `np.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: основы» →