Мне всегда интересно, поскольку списки являются одной из важных структур данных 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.