NumPy 是 Python 中用于科学计算的基础库之一,它提供了高性能的多维数组对象以及这些数组的操作。NumPy 的核心数据结构是 ndarray
(N-dimensional array,N维数组),它提供了一种高效的存储和操作大型多维数组的方法。以下是几种 NumPy 数组(array)的常见使用方式:
1. 创建数组
-
使用
numpy.array()
:从已有的 Python 列表(或任何类似数组的对象)创建数组。import numpy as np arr = np.array([1, 2, 3, 4, 5])
-
使用
numpy.zeros()
,numpy.ones()
,numpy.empty()
:创建具有指定形状和类型的新数组,分别初始化为全零、全一或未初始化的随机值。zeros = np.zeros((2, 3)) # 创建一个2x3的零数组 ones = np.ones((2, 3)) # 创建一个2x3的一数组 empty = np.empty((2, 3)) # 创建一个2x3的未初始化数组
-
使用
numpy.arange()
,numpy.linspace()
:创建等差数列或等间距数列。arange = np.arange(0, 10, 2) # 从0到10(不包括10),步长为2的数组 linspace = np.linspace(0, 10, 5) # 从0到10,生成5个等间距的数
2. 数组的基本操作
-
索引和切片:NumPy 数组支持 Python 的索引和切片操作。
arr = np.array([1, 2, 3, 4, 5]) print(arr[2]) # 输出 3 print(arr[1:4]) # 输出 [2 3 4]
-
广播(Broadcasting):NumPy 允许数组之间进行逐元素操作,即使它们的形状不完全相同,这通过广播机制实现。
a = np.array([[1, 2], [3, 4]]) b = np.array([10, 20]) print(a + b) # 广播机制使得 b 被扩展为 [[10, 20], [10, 20]],然后执行逐元素加法
-
数组重塑(Reshaping):改变数组的形状而不改变其数据。
arr = np.array([1, 2, 3, 4, 5, 6]) reshaped_arr = arr.reshape((2, 3)) # 创建一个2x3的数组
3. 数组的数学和统计函数
NumPy 提供了大量的数学函数,用于数组上的元素级操作,如 np.sin()
, np.cos()
, np.exp()
等。此外,还有统计函数如 np.mean()
, np.std()
, np.sum()
等,用于计算数组的统计量。
arr = np.array([1, 2, 3, 4, 5])
print(np.mean(arr)) # 输出平均值
print(np.std(arr)) # 输出标准差
4. 数组的组合
-
水平堆叠(
np.hstack()
)和垂直堆叠(np.vstack()
):将多个数组沿指定的轴堆叠起来。a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) print(np.hstack((a, b))) # [1 2 3 4 5 6] print(np.vstack((a, b))) # [[1 2 3]# [4 5 6]]
-
列堆叠(
np.column_stack()
)和行堆叠(np.row_stack()
):与hstack
和vstack
类似,但主要用于二维数组。