NumPy数组的常见操作(附带实例,新手必看)
NumPy 是 Numerical Python 的简称,是重要的 Python 数值计算包。
在大量的数据运算中,Python 自身提供的 list 效率并不高,而 NumPy 提供了高效的多维数组对象,使复杂的数学计算变得更简单、快速。
下面举一个简单的例子:
同样,可以创建二维甚至更高维度的数组:
例如,可以将每个元素乘一个数,或进行更复杂的数学操作:
在处理二维或更高维度的数组时,NumPy 数组的索引和切片操作功能更为强大:
在上面的代码中,需要掌握如下知识:
例如,用户可以选择数组中所有大于 2 的元素:
例如:
在上面的代码中,result=A+a 这行代码将数组 a 加到数组 A 的每一行上。由于数组 a 和数组 A 的形状不同,数组 a 是一个长度为 3 的一维数组,数组 A 是一个 3x3 的二维数组,在这种情况下,就需要广播。数组 a 被广播到数组 A 的每一行上,再执行加法操作。因此,输出的结果是一个新的二维数组,每个元素都是对应元素相加的结果。
下面是一些示例:
在大量的数据运算中,Python 自身提供的 list 效率并不高,而 NumPy 提供了高效的多维数组对象,使复杂的数学计算变得更简单、快速。
安装NumPy
NumPy 的安装非常简单,只需在命令行或终端中使用 pip 工具进行安装:pip install numpy
如果成功安装 NumPy,则会出现如下图所示的界面。
创建NumPy数组
NumPy 的核心功能是 ndarray,即 n-dimensional array,该功能支持多维数组。用户可以使用 numpy.array() 函数,从 Python 列表中创建数组。下面举一个简单的例子:
# 导入NumPy import numpy as np # 创建一个一维 NumPy 数组 a = np.array([1,2,3,4,5]) print(a)上述代码的执行结果为:
[1,2,3,4,5]
同样,可以创建二维甚至更高维度的数组:
# 导入NumPy import numpy as np # 创建一个二维 NumPy 数组 b = np.array([[1,2,3],[4,5,6]]) print(b)上述代码的执行结果为:
[[1 2 3]
[4 5 6]]
NumPy数组操作
NumPy 数组支持许多数学操作,这些操作会应用于数组中的每一个元素,这被称为数组的矢量化(Vectorization)。使用这些数学操作会使代码更简洁,运行速度也更快。例如,可以将每个元素乘一个数,或进行更复杂的数学操作:
# 导入NumPy import numpy as np a = np.array([1,2,3,4,5]) b = a * 2 # 每个元素乘 2 print(b) c = np.sqrt(a) # 每个元素求平方根 print(c)上述代码的执行结果为:
[ 2 4 6 8 10]
[1. 1.41421356 1.73205081 2. 2.23606798]
NumPy索引与切片
与 Python 的 list 类似,NumPy 数组支持索引和切片操作:a = np.array([1,2,3,4,5]) # 索引操作 print(a[0]) # 切片操作 print(a[1:3])
在处理二维或更高维度的数组时,NumPy 数组的索引和切片操作功能更为强大:
b = np.array([[1,2,3],[4,5,6]]) # 索引操作 print(b[0,1]) # 输出:2 # 切片操作 print(b[:,1:3])上述代码的执行结果为:
1
[2 3]
2
[[2 3]
[5 6]]
在上面的代码中,需要掌握如下知识:
- print(b[0, 1]):这行代码用于从数组 b 中取值。在 NumPy 中,可以通过 [row_index, column_index] 的方式索引二维数组。这里的 [0, 1] 意味着取第一行第二列的元素。在 Python 中,索引是从 0 开始的。所以这行代码的输出结果是 2。
- print(b[:, 1:3]):这行代码用于对数组 b 进行切片操作。在 NumPy 中,“:”代表取所有的元素,“1:3”代表取索引 1 到索引 3(不包括索引 3)的元素。所以,[:, 1:3] 代表取所有行的第二列和第三列元素。因此,这行代码的输出结果是一个新的二维数组,包含原数组中的第二列和第三列元素,即 [[2, 3], [5, 6]]。
NumPy条件索引
在 NumPy 中,用户可以使用条件表达式索引数组。这是一种非常强大的功能,可以使用户根据某个条件选择数组中的元素。例如,用户可以选择数组中所有大于 2 的元素:
a = np.array([1,2,3,4,5]) # 条件索引 b = a[a > 2] print(b)上述代码的执行结果为:
[3 4 5]
NumPy广播(Broadcasting)
广播是 NumPy 中处理不同大小数组的强大工具。例如,用户可能有一个较小的数组和一个较大的数组,并且希望使用较小的数组多次完成某些操作,从而能处理较大的数组。例如:
import numpy as np a = np.array([1,2,3]) b = np.array([1,2]) # 将一个值加到一个数组的每个元素上 result = a + 5 print(result) # 输出:array([6,7,8]) # 将一个数组加到另一个数组的每一行上 A = np.array([[1,2,3],[4,5,6],[7,8,9]]) result = A + a print(result)上述代码的执行结果为:
[6 7 8]
[[ 2 4 6]
[ 5 7 9]
[ 8 10 12]]
在上面的代码中,result=A+a 这行代码将数组 a 加到数组 A 的每一行上。由于数组 a 和数组 A 的形状不同,数组 a 是一个长度为 3 的一维数组,数组 A 是一个 3x3 的二维数组,在这种情况下,就需要广播。数组 a 被广播到数组 A 的每一行上,再执行加法操作。因此,输出的结果是一个新的二维数组,每个元素都是对应元素相加的结果。
NumPy聚合
NumPy提供在数组上进行聚合操作的函数,如计算数组的总和、平均值、最大值、最小值等。下面是一些示例:
import numpy as np a = np.array([1,2,3,4,5]) # 求和 result = np.sum(a) print(result) # 输出:15 # 求平均值 result = np.mean(a) print(result) # 输出:3.0 # 求最大值 result = np.max(a) print(result) # 输出:5 # 求最小值 result = np.min(a) print(result) # 输出:1上述代码的执行结果为:
15
3.0
5
1
NumPy排序
NumPy 提供了 np.sort() 函数,用于对数组中的元素进行排序,例如:import numpy as np a = np.array([2,4,1,5,3]) # 排序 result = np.sort(a) print(result)上述代码的执行结果为:
[1 2 3 4 5]
上面这些功能都是 NumPy 的核心功能,在数据科学和机器学习中经常使用。有了这些工具,用户将能更有效地处理和分析数据。