@Ernest3
Учусь программированию

За счёт чего NumPy массивы эфективнее питоновских списков?

Везде написано что NumPy массивы более быстрые и эффективные чем списки. Почему это так, у них какая-то более оптимальная реализация или же так пишу, из-за того что массивы имеют множество полезных и удобных функций, которые эффективно написаны?
  • Вопрос задан
  • 1105 просмотров
Решения вопроса 1
@dmshar
Массивы в Numpy реализованы почти так-же как и в С++ . Главное отличие - это всегда непрерывный в оперативной памяти участок однотипных данных. За счет этих двух фундаментальных свойств и соответственно - отсутствия соответствующих проверок и преобразований, операции над элементами массивов Numpy выполняются ощутимо быстрее, чем над списками, особенно при больших объемах хранимой информации. Недостатком массивов в Numpy есть неэффективное использования оперативной памяти в случаях, если реальных элементов массиве меньше, чем задекларированный размер массива.
Списки реализованы в виде несколько модифицированной ссылочной структуры С++. Точнее - память там выделяется блоками, доступ не прямо к элементу, а через систему ссылок и пр. Кроме того, списки это разнотипные элементы, более того - это возможно еще и списки списков или списки других составных типов данных. В общем, что-бы выполнить простую операцию, интерпретатору необходимо выполнить достаточно много проверок и переходов.
В последних версиях реализация списков сильно оптимизирована. Тем не менее, операции с его элементами остаются более медленными, чем над элементами массивов Numpy.
Наличие "множества полезных и удобных функций" - это уже производное от базовых отличий.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
longclaps
@longclaps
Списки могут быть составлены из чего угодно,
массивы составлены из однородных элементов.
Вот весь секрет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы