Ndarrays NumPy против списков Python - PullRequest
2 голосов
/ 25 мая 2019

Я новичок в Python, и недавно я узнал о NumPy и его знаменитых ndarrays .Сначала, прочитав много людей, восхваляющих их (некоторые ссылки здесь , здесь , здесь ), я подумал:

"Хорошо, еслиМассивы NumPy намного лучше, и, если мне действительно все равно, что в одном списке / массиве есть разнородные типы данных, зачем мне использовать список Python? "

Однако после более глубокого исследования яОбнаружено, что использование ndarrays также имеет отрицательные стороны (некоторые ссылки здесь и здесь ).Я понял основные плюсы и минусы использования каждой из этих структур данных, но это все еще кажется мне очень запутанным.Итак, мой вопрос: как новичок в Python, когда мне следует использовать массивы NumPy и когда я должен использовать списки Python?Как я могу, учитывая ситуацию, оценить, какой вариант является лучшим?

Некоторые могут быть склонны считать этот пост дубликатом - и действительно уже есть много тем "ndarrays vs lists".Однако я долго искал и не нашел удовлетворительного ответа на свой вопрос.Многие люди говорят о преимуществах ndarrays и списков, но до сих пор неясно, особенно для таких начинающих, как я, как выбирать между ними.Должен ли я использовать массивы NumPy в повседневном кодировании и сохранять списки для особых ситуаций?Или я должен сделать обратное?Спасибо!

Примечание: , поскольку это может иметь отношение к ответам, я намерен использовать Python в основном для машинного обучения.

1 Ответ

3 голосов
/ 25 мая 2019

Списки Python более громоздкие. В основном это массивы указателей, которые занимают гораздо больше памяти, чем numpy ndarrays. В результате для математических операций, включающих матрицы и сложные вычисления, ndarrays является лучшим вариантом. Из-за этого большинство математических операций были оптимизированы для numpy, и есть более математически полезные функции для ndarrays.

Однако списки Python гораздо более гибкие. Они могут содержать разнородные, произвольные данные, и добавление / удаление очень эффективно. Если вы хотите добавить и удалить много разных объектов, лучше всего использовать списки Python.

В целях машинного обучения, ndarrays определенно ваш лучший выбор. Tensorflow и keras, две самые популярные библиотеки машинного обучения, больше подходят для массивов, эффективно использующих память numpy, поскольку они работают с большими объемами однородных данных.

...