南京飞酷网络带你了解:Python列表 VS Numpy数组
2024-06-04 加入收藏
相同点
Python列表和NumPy数组都是在Python编程语言中使用的基本数据结构。
它们都可以存储和访问多个元素,并支持在序列中进行索引、切片和迭代等操作。
此外,它们还都可以通过循环和条件语句来处理数据,以及使用函数和方法对它们进行修改和转换。
它们都可以通过函数和方法进行排序、合并和拆分等常见操作。
import numpy as np
# 创建一个Python列表和NumPy数组
my_list = [1, 2, 3, 4, 5]
my_array = np.array([1, 2, 3, 4, 5])
# 打印列表和数组
print("Python列表:", my_list)
print("NumPy数组:", my_array)
# 结果
# Python列表: [1, 2, 3, 4, 5]
# NumPy数组: [1 2 3 4 5]
# 访问列表和数组中的元素
print("列表第一个元素:", my_list[0])
print("数组第一个元素:", my_array[0])
# 结果
# 列表第一个元素: 1
# 数组第一个元素: 1
# 使用循环对列表和数组进行迭代
for element in my_list:
print("Python列表的元素:", element)
for element in my_array:
print("NumPy数组的元素:", element)
# 结果
# Python列表的元素: 1
# Python列表的元素: 2
# Python列表的元素: 3
# Python列表的元素: 4
# Python列表的元素: 5
# NumPy数组的元素: 1
# NumPy数组的元素: 2
# NumPy数组的元素: 3
# NumPy数组的元素: 4
# NumPy数组的元素: 5
# 使用内置函数和方法对列表和数组进行操作
print("列表的总和:", sum(my_list))
print("数组的总和:", np.sum(my_array))
# 结果
# 列表的总和: 15
# 数组的总和: 15
不同点
数据类型
NumPy数组是一个由同类型数据元素组成的多维数组;
Python列表则可以包含任何类型的对象,包括数字、字符串和其他Python对象。
内存使用
NumPy数组在内存中存储为连续的块,因此比Python列表更有效地使用内存;
NumPy数组可以使用原地操作来修改其内容,这意味着它们可以在不创建新数组的情况下执行许多操作。
import numpy as np
import sys
# 创建一个包含10000个整数的Python列表
my_list = list(range(10000))
# 创建一个包含10000个整数的NumPy数组
my_array = np.array(range(10000))
# 查看Python列表和NumPy数组在内存中所占用的空间
print("Python列表占用内存:", sys.getsizeof(my_list))
print("NumPy数组占用内存:", my_array.nbytes)
# 输出
# Python列表占用内存:80056
# NumPy数组占用内存:40000
算术操作
NumPy数组支持矢量化操作和广播,这使得对整个数组执行算术和数学操作更为简单和高效;
Python列表需要使用循环来执行这些操作。
import numpy as np
# 使用NumPy数组进行加法
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c) # 输出 [5 7 9]
# 使用Python列表进行加法
a = [1, 2, 3]
b = [4, 5, 6]
c = []
for i in range(len(a)):
c.append(a[i] + b[i])
print(c) # 输出 [5, 7, 9]
运行速度
NumPy数组是经过优化的C代码实现的,因此它们通常比Python列表更快。
对于大型数据集和复杂的计算,使用NumPy数组通常会更有效率。
相互转换
Python列表转换为NumPy数组
import numpy as np
# 创建一个Python列表
my_list = [1, 2, 3, 4, 5]
# 将Python列表转换为NumPy数组
my_array = np.array(my_list)
# 输出转换后的NumPy数组
print(my_array)
# 输出
# [1 2 3 4 5]
NumPy数组转换为Python列表
import numpy as np
# 创建一个NumPy数组
my_array = np.array([1, 2, 3, 4, 5])
# 将NumPy数组转换为Python列表
my_list = my_array.tolist()
# 输出转换后的Python列表
print(my_list)
# 输出
# [1, 2, 3, 4, 5]
总结
如果需要进行科学计算、数据分析和数值处理,NumPy是一种强大的工具;
如果只需要简单地存储和操作数据,Python列表则是一种更为通用和灵活的选择。