Python Lists VS Numpy Arrays

Python Lists VS Numpy Arrays

在这里,我们将了解Python List和Python Numpy数组之间的区别。

什么是Numpy数组

NumPy是Python中科学计算的基本包。Numpy数组有助于对大量数据进行高级数学和其他类型的操作。通常情况下,与使用Python的内置序列相比,这种操作的执行效率更高,代码更少。Numpy不是另一种编程语言,而是一个Python扩展模块。它对同质数据的数组提供快速有效的操作。

关于Numpy数组的一些重要观点:

  • 我们可以使用Numpy.array()在python中创建一个N维数组。
  • 数组默认是同质的,这意味着数组内的数据必须是相同的数据类型。(注意你也可以在python中创建一个结构化数组)。
  • 可以进行元素的操作。
  • Numpy数组有各种函数、方法和变量,以方便我们进行矩阵计算。
  • 数组的元素在内存中是连续存储的。例如,一个二维数组的所有行必须有相同数量的列。或者一个三维数组的每张卡片上必须有相同数量的行和列。

Numpy数组的代表

  • 单维Numpy数组
import numpy as np
 
a = np.array([1, 2, 3])
print(a)

输出:

[1 2 3]
  • 多维Numpy数组
import numpy as np
 
a = np.array([(1, 2, 3), (4, 5, 6)])
print(a)

输出:

[[1 2 3]
[4 5 6]]

什么是Python列表

Python 的 list 是一个有序且可改变的集合。在 Python 中,列表是用方括号写的。

关于Python Lists的一些重要观点:

  • 列表可以是同质的或异质的。
  • 在列表中不可能进行元素操作。
  • Python 的列表默认是一维的。但是我们可以创建一个 N 维的列表。但这也将是一个存储另一个 1D 列表的 1D 列表。
  • 列表中的元素在内存中不需要是连续的。

下面是一些例子,通过分析Numpy数组的内存消耗、执行时间比较以及两者所支持的操作,清楚地表明Numpy数组是如何优于Python列表的。

Python列表的代表

这里我们使用[]创建Python列表。

Var = ["Geeks", "for", "Geeks"]
print(Var)

输出:

["Geeks", "for", "Geeks"]

Numpy数组和Python列表的比较

Numpy数组和列表之间的内存消耗

在这个例子中,将创建一个Python列表和一个大小为1000的Numpy数组。将计算每个元素的大小,然后计算两个容器的整体大小,并在内存消耗方面做一个比较。

# importing numpy package
import numpy as np
 
# importing system module
import sys
 
# declaring a list of 1000 elements
S= range(1000)
 
# printing size of each element of the list
print("Size of each element of list in bytes: ",sys.getsizeof(S))
 
# printing size of the whole list
print("Size of the whole list in bytes: ",sys.getsizeof(S)*len(S))
 
# declaring a Numpy array of 1000 elements
D= np.arange(1000)
 
# printing size of each element of the Numpy array
print("Size of each element of the Numpy array in bytes: ",D.itemsize)
 
# printing size of the whole Numpy array
print("Size of the whole Numpy array in bytes: ",D.size*D.itemsize)

输出:

Size of each element of list in bytes:  48
Size of the whole list in bytes:  48000
Size of each element of the Numpy array in bytes:  8
Size of the whole Numpy array in bytes:  8000

Numpy数组和Python列表之间的时间比较

在这个例子中,将创建2个Python列表和2个Numpy数组,每个容器有1000000个元素。将分别对列表和Numpy数组中的元素进行乘法,并分析两个容器执行所需时间的差异,以确定哪一个执行操作所需时间更短。

# importing required packages
import numpy
import time
 
# size of arrays and lists
size = 1000000
 
# declaring lists
list1 = range(size)
list2 = range(size)
 
# declaring arrays
array1 = numpy.arange(size)
array2 = numpy.arange(size)
 
# capturing time before the multiplication of Python lists
initialTime = time.time()
 
# multiplying elements of both the lists and stored in another list
resultantList = [(a * b) for a, b in zip(list1, list2)]
 
# calculating execution time
print("Time taken by Lists to perform multiplication:",
    (time.time() - initialTime),
    "seconds")
 
# capturing time before the multiplication of Numpy arrays
initialTime = time.time()
 
# multiplying elements of both the Numpy arrays and stored in another Numpy array
resultantArray = array1 * array2
 
# calculating execution time
print("Time taken by NumPy Arrays to perform multiplication:",
    (time.time() - initialTime),
    "seconds")

输出:

Time taken by Lists : 0.15030384063720703 seconds
Time taken by NumPy Arrays : 0.005921125411987305 seconds

对Numpy数组和Python Lists的操作效果

在这个例子中,演示了Python list不能进行基本操作的情况。一个Python列表和一个具有相同元素的Numpy数组将被声明,一个整数将被添加到容器的每个元素中,以该整数值递增,而不需要循环语句。将分析这个操作对Numpy数组和Python列表的影响。

# importing Numpy package
import numpy as np
 
# declaring a list
ls =[1, 2, 3]
 
# converting the list into a Numpy array
arr = np.array(ls)
 
try:
    # adding 4 to each element of list
    ls = ls + 4
     
except(TypeError):
    print("Lists don't support list + int")
 
# now on array
try:
    # adding 4 to each element of Numpy array
    arr = arr + 4
 
    # printing the Numpy array
    print("Modified Numpy array: ",arr)
     
except(TypeError):
    print("Numpy arrays don't support list + int")

输出:

Lists don't support list + int
Modified Numpy array: [5 6 7]

总结

使用Numpy数组比Python列表的优势。

  • 消耗的内存更少。
  • 与Python清单相比,速度很快。
  • 使用方便。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程