Мне всегда интересно, поскольку списки являются одной из важных структур данных Python, поскольку мы можем выполнять все операции со списками и хотим знать, почему массивы NumPy особенные.
Прежде чем перейти к различиям между ними, давайте кратко познакомимся с ними обоими.
Списки. Список - это набор элементов, который можно записать в виде списка элементов, разделенных запятыми, в квадратных скобках. Важной особенностью списка является то, что элементы в списке не обязательно должны быть одного типа, доступ к каждому элементу списка осуществляется с помощью значения индекса. В python индекс списков начинается с 0 и так далее.
Список - это изменяемая (изменяемая) последовательность типов данных.
Синтаксис -
list_name = [element1,element2,element3.....]
Примеры -
list_name1 = [1, 2, 3, 4, 5 ] list_name2 = ["Abby", "Alexa", "Bob"] list_name3 = [1,3.5,"Tom"]
NUMPY -
NumPy означает числовой Python.
NumPy - это одна из библиотек в Python, которая представляет собой таблицу элементов (обычно чисел) одного типа. Класс массива NumPy называется ndarray. Здесь numpy.array отличается от массива из класса библиотеки python. Массив может обрабатывать только одномерный массив и предлагает меньшую функциональность, тогда как NumPy не имеет ограничений в качестве массивов.
Импорт пакета NumPy выглядит следующим образом:
import numpy as np
Создание массива NumPy -
Один из способов создания массива NumPy -
arr = np.array([1, 2, 3])
Создание массива NumPy с использованием кортежа -
arr = np.array((1, 2, 3))
Теперь давайте посмотрим на различия ...
Списки против NumPy -
В программировании программного обеспечения, если смотреть на различия, основные цели будут связаны с памятью и производительностью.
1. Operation Wise -
Используя массивы NumPy, мы можем выполнять сложные математические операции с большими данными более эффективно, чем списки Python.
2. Разумная память -
Массивы NumPy занимают меньше памяти, чем списки, теперь давайте рассмотрим это на примере.
Здесь я создаю список, используя функцию range () и массив NumPy, используя функцию arange (). Давайте найдем размер списка, умножив размер элемента на длину списка.
Вычисление памяти, занимаемой списком -
l = range(100) print(sys.getsizeof(7)*len(l))
Выход -
2800
Теперь давайте посмотрим, что память занята массивом NumPy -
Здесь мы умножаем элемент массива NumPy на размер массива.
a = np.arange(100) print(a.size * a.itemsize)
Выход -
800
Как мы видим, между ними довольно много различий, поэтому можно сказать, что массивы NumPy занимают гораздо меньше места, чем списки.
3. Массивы NumPy быстрее списков -
Давайте посмотрим, как массивы Numpy быстрее списков Python при выполнении любой операции
Добавление двух списков и проверка времени выполнения здесь,
# Adding two python lists list1 = range(100000) list2 = range(100000) start = time.time() list_sum = [(a,b) for a,b in zip(list1,list2)] end = time.time() print(f"Adding Time for lists - {end - start}")
Вывод для списков -
Adding Time for lists - 0.08425045013427734
Добавление двух массивов NumPy и проверка времени выполнения здесь,
# Adding two numpy arrays np1 = np.arange(100000) np2 = np.arange(100000) start = time.time() np_sum = np1 + np2 end = time.time() print(f"Adding Time for NumPy arrays - {end - start}")
Вывод для NumPy -
Adding Time for NumPy arrays - 0.0008752346038818359
Не только о быстродействии, но и о том, насколько легко добавлять массивы NumPy, чем списки, поскольку нам нужно запустить цикл для добавления списков.
Следовательно, мы можем сделать вывод, что массивы NumPy быстрее и удобнее, чем списки Python.