Тип данных встроенного списка Python является мощным. Однако Numpy Array имеет много преимуществ по спискам Python. Кто они такие?
Многомерное нарезка | Не зависит от библиотеки |
Функциональность вещания | Интуитивно понятный |
Скорость обработки | Менее сложный |
След памяти | Гетерогенные данные списка разрешены |
Много удобных методов | Произвольная форма данных (не квадратная матрица) |
Давайте погрузимся в самые важные преимущества Numpy Armays над списками Python.
1. Еще мощные функциональные возможности нарезки и вещания.
В отличие от обычного нарезки, намененное наменение немного более мощнее. Вот как Nampy обрабатывает задание значения в расширенный кусок.
import numpy as np l = list(range(10)) l[::2] = 999 # Throws error --> assign iterable to extended slice a = np.arange(10) a[::2] = 999 print(a) # [999 1 999 3 999 5 999 7 999 9]
Метод нарезки обычного Python не может реализовать намерение пользователя в качестве Numpy. В обоих случаях ясно, что пользователь хочет назначить 999 на любой другой элемент на ломтике. Numpy не имеет проблем, внедряющих эту цель.
Кроме того, Numpy может выполнять многомерные нарезки, которые не удобны в Python.
import numpy as np a = np.arange(16) a = a.reshape((4,4)) print(a) # [ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11] # [12 13 14 15]] print(a[:, 1]) # Second column: # [ 1 5 9 13] print(a[1, :]) # Second row: # [4 5 6 7]
Попробуйте сами: Выполните этот фрагмент кода в интерактивной оболочке Python в вашем браузере.
Если вы хотите овладеть точными, но мощными функциями Numpy и стать наукой данных Pro, проверьте мою книгу «Coffe Break Numpy».
2. Более эффективное представление данных.
Numpy Armays намного быстрее доступа к и создает, имея меньшую площадь памяти. Нужно больше доказательства?
import numpy as np import sys x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y = np.array(x) print(sys.getsizeof(x)) # 144 bytes print(sys.getsizeof(y)) # 136 bytes
Попробуйте сами: Интересно, что это не так, кажется, правда во всех средах. Если я запускаю это в моем браузере, я получаю другой результат. Я подозреваю, что это потому, что различия в производительности были уменьшены в Python 3.8 Отказ
Упражнение: Выполните этот фрагмент кода в интерактивной оболочке Python в вашем браузере.
След снижения памяти Numpy Armpy становится еще более выраженным для больших наборов данных.
Проверьте Этот отличный ресурс Где вы можете проверить Скорость Numpy массивов против списков Python.
3. Удобнее.
Это отлично Ответ в Stackoverflow Предоставляет отличный пример того, как Numpy Armays гораздо удобнее на практике:
Прочитайте ваши данные из файла и преобразуйте его в трехмерный куб:
x = numpy.fromfile(file=open("data"), dtype=float).reshape((10, 10, 10))
Найдите клетки, которые превышают определенный порог 0,1:
(x > 0.1).nonzero()
Сумма по первому измерению:
x.sum(axis=0)
Все эти возможности просто не существуют в списках Python. Нет никакого способа создания многомерного списка Python в таком кратком уровне!
Попробуйте сами: Выполните этот фрагмент кода в интерактивной оболочке Python в вашем браузере.
Упражнение: какая производительность этого кода фрагмент?
Куда пойти отсюда?
Вы любите Numpy? И вы хотите создать специализацию Python в области науки о данных?
Тогда проверьте мою книгу «Coffe Break Numpy». Электронная книга поставляется с большим количеством ручной работы материала, Numpy Pazzles, читыми листами и даже видеоуронениями, которые будут повышать уровень навыков наведения данных. Вашему Numpy Education является критическим ключевым камнем на вашем пути к науке о науке и изучения машины.
Получите ваш перерыв на кофе Nampy сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.