Карточка Junior NumPy: массивы и векторизация спрашивают часто обновлено

Почему NumPy быстрее списков

Вопрос

Почему операции над массивом NumPy быстрее цикла по списку?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Массив хранит числа одного dtype подряд в памяти, без объектов Python на каждый элемент. Операция выполняется циклом на C (часто с SIMD), без интерпретатора и проверки типов на каждом шаге.

Ответ

Массив хранит числа одного dtype подряд в памяти, без объектов Python на каждый элемент. Операция выполняется циклом на C (часто с SIMD), без интерпретатора и проверки типов на каждом шаге. Список хранит указатели на отдельные объекты, и цикл идёт через байт-код.

Разбор

Массив хранит числа одного dtype подряд в памяти, без объектов Python на каждый элемент. Операция выполняется циклом на C (часто с SIMD), без интерпретатора и проверки типов на каждом шаге. Список хранит указатели на отдельные объекты, и цикл идёт через байт-код.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.