Python list 与 NumPy array 区分详解
Python中的列表(list)和NumPy中的数组(array)都是常用的数据结构,但它们之间有很多区别。本文将详细讲解Python list与NumPy array的区别。
Python list
Python中的列表是一种可变的有序序列,可以存储任意数量的任意类型的数据。列表使用方括号[]来表示,其中的元素逗号分隔。下面是一个简单的列表示例:
my_list = [1, 2, 3, 'hello', 'world']
Python list的基本操作
- 访问列表元素
使用下标访问列表中的元素,下标从0开始。例如,要访问上面示例中的第一个元素,可以使用以下代码:
print(my_list[0]) # 输出:1
- 列表元素
可以使用下标来修改列表中的元素。例如,要将上面示例中的第元素修改为10,可以使用以下:
my_list[0] = 10
print(my_list) # 输出:[10, 2, 3, 'hello', 'world']
- 列表切片可以使用切片来获取列表的子集。切片使用[start:end]的形式表示,其中start表示起始下标,end表示结束下标(不包含)。例如,要获取上面示例中的前三个元素,可以使用以下代码:
print(my_list[0:3]) # 输出:[10, 2, 3]
- 列表拼接
可以使用加号+来将两个拼接成一个新的列表。例如,要将上面示例中的列表和另一个列表[4, 5, 6]拼接起来,使用以下代码:
new_list = my_list + [4, 5, 6]
print(new_list) # 输出:[10, 2, 3, 'hello', 'world', 4, 5,6]
`
5. 列表重复
可以使用乘号*来将一个列表重复多次。例如,要将上面示例中的列表重复3次,可以使用以下代码:
```python
new_list = my_list * 3
print(new_list) # 输出:[10, 2, 3, 'hello', 'world', 10, 2, 3, 'hello', 'world', 10, 2, 3, '', 'world']
- 列表长度
可以使用len()函数来获取列表的长度。例如,要获取上面示例中的列表的长度,可以使用以下代码:
print(len(my_list)) # 输出5
Python list的高级操作
- 列表排序
可以使用sort()方法对列表进行排序。例如,要对一个包含数字的列表进行排序,可以使用以下代码:
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort()
print(my_list) # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
- 列表反转
可以reverse()方法将列表中的元素反转。例如,要将上面示例中的列表反转,可以使用以下代码:
my_list.reverse()
print(my_list) 输出:[5, 3, 5, 6, 2, 9, 5, 4, 1, 4, 3]
- 列表删除元素
可以使用del语句或remove()方法来删除列表中的元素。例如,要删除上面示例中的第一个元素,可以使用以下代码:
del my_list[0]
print(my_list) 输出:[3, 5, 6, 2, 9, 5, 4, 1, 4, 3]
- 列表插入元素
可以使用insert()方法在列表中插入元素。例如,要在上面示例中的第一个位置插入一个元素10,可以使用以下代码:
my_list.insert(0, 10)
print(my_list) # 输出:[10, 3, 5, 6, 2, 9, 5, 4, 1, 4, 3]
NumPy array
NumPy是Python中的一个科学计算库,它提供了高性能的多维数组对象和相关的计算工具。NumPy中的数组(array)是一种固定大小的、可变类型的序列,可以存储任意数量的任意类型的数据。NumPy中的数组使用array()函数来创建,其中的元素逗号分隔。下面是一个简单的数组示例:
import numpy as np
my_array = np.array([1, 2, 3, 4, 5])
NumPy array的基本操作
- 访问数组元素
使用下标访问数组中的元素,下标从0开始。例如,要访问上面示例中的第一个元素,可以使用以下代码:
print(my_array[0]) # 输出:1
- 数组元素
可以使用下标来修改数组中的元素。例如,要将上面示例中的第一个元素修改为10,可以使用以下:
my_array[0] = 10
print(my_array) # 输出:[10, 2, 3, 4, 5]
- 数组切片可以使用切片来获取数组的子集。切片使用[start:end]的形式表示,其中start表示起始下标,end表示结束下标(不包含)。例如,要获取上面示例中的前三个元素,可以使用以下代码:
print(my_array[0:3]) # 输出:[10, 2, 3]
- 数组拼接
可以使用concatenate()函数将两个数组拼接成一个新的数组。例如,要将上面示例中的数组和另一个数组[6, 7, 8]拼接起来,使用以下代码:
new_array = np.concatenate((my_array, [6, 7, 8]))
print(new_array) # 输出:[10, 2, 3, 4, 5, 6, 7, 8]
- 数组重复
可以使用repeat()函数将一个数组重复多次。例如,要将上面示例中的数组重复3次,可以使用以下代码:
new_array = np.repeat(my_array, 3)
print(new_array) # 输出:[10, 10, 10, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
- 数组长度
可以使用shape属性来获取数组的长度。例如,要获取上面示例中的数组的长度,可以使用以下代码:
print(my_array.shape) # 输出(5,)
NumPy array的高级操作
- 数组排序
可以使用sort()函数对数组进行。例如,要对一个包含数字的数组进行排序,可以使用以下代码:
my_array = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])
my_array.sort()
print(my_array) # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
- 数组反转
可以使用flip()函数将数组中的元素反转。例如,要将上面示例中的数组反转,可以使用以下代码:
my_array = np.flip(my_array)
print(my_array) # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
- 数组删除元素
可以使用delete()函数来删除数组中的元素。例如,要删除上面示例中的第一个元素,可以使用以下代码:
my_array = np.delete(my_array, 0)
print(my_array) # 输出:[6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
- 数组插入元素
可以使用insert()函数在数组中插入元素。例如,要在上面示例中的第一个位置插入一个元素10,可以使用以下代码:
my_array = np.insert(my_array, 0, 10)
print(my_array) # 输出:[10, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
Python list与NumPy array的区别
- 数据类型
Python list可以存储任意类型的数据,而NumPy array只能存储相同类型的数据。
- 内存占用
Python list中的元素是对象,每个对象都包含了类型信息、引用计数和其他信息,因此Python list的内存占用比NumPy array要大得多。
- 访问速度
由于Python list中的元素是对象,因此访问速度比NumPy array要慢得多。而NumPy array中的元素是连续存储的,因此访问速度非常快。
- 数学运算
NumPy array支持向量化运算,可以对整个数组进行数学运算,而Python list需要使用循环来实现。
示例说明
下面是示例,演示如何使用Python list和NumPy array:
import numpy as np
# 定义一个列表
my_list = [1, 2, 3, 4, 5]
# 定义一个数组
my_array = np.array([1, 2, 3, 4, 5])
# 访问列表和数组中的元素
print(my_list[0]) # 输出:1
print(my_array[0]) # 输出:1
# 列表和数组切片
print(my_list[0:3]) # 输出:[1, 2, 3]
print(my_array[0:3]) # 输出:[1, 2, 3]
# 列表和数组拼接
new_list = my_list + [6, 7, 8]
new_array = np.concatenate((my_array, [6, 7, 8]))
print(new_list) # 输出:[1, 2, 3, 4, 5, 6, 7, 8]
print(new_array) # 输出:[1, 2, 3, 4, 5, 6, 7, 8]
# 列表和数组重复
new_list = my_list * 3
new_array = np.repeat(my_array, 3)
print(new_list) # 输出:[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(new_array) # 输出:[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
# 列表和数组长度
print(len(my_list)) # 输出:5
print(my_array.shape) # 输出:(5,)
在这个示例中,我们首先定义了一个列表my_list和一个数组my_array。然后演示了如何访问列表和数组中的元素、如何使用切片获取子集、如何使用加号+拼列表和数组、如何使用乘号*重复列表和数组、以及如何使用len()函数获取列表的长度和shape属性获取数组的长度。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python list与NumPy array 区分详解 - Python技术站