Numpy: Python体系的数组¶
一、Numpy 简介¶
Numpy 是 Python 中用于科学计算的一个基础库。它提供了强大的数组对象和矩阵运算功能,能够高效地处理大规模数据。Numpy 的核心是 ndarray,即多维数组对象,它支持多种数据类型,并且可以进行高效的向量化操作,避免了使用循环等低效方式。
二、数据向量化¶
向量化操作是 Numpy 的一大优势,它允许我们对整个数组进行操作,而无需使用循环逐个处理元素,从而大大提高计算效率。
示例 1:向量化加法¶
import numpy as np
# 创建两个一维数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 向量化加法
c = a + b
print(c) # 输出:[5 7 9]
示例 2:向量化乘法¶
# 创建两个二维数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 向量化乘法(逐元素乘法)
c = a * b
print(c) # 输出:[[ 5 12]
# [21 32]]
三、索引¶
通过索引可以访问数组中的特定元素。
示例 1:一维数组索引¶
示例 2:二维数组索引¶
四、切片¶
切片操作可以获取数组中的一部分数据。
示例 1:一维数组切片¶
a = np.array([1, 2, 3, 4, 5])
# 获取从索引 1 到索引 3 的元素(不包括索引 3)
print(a[1:3]) # 输出:[2 3]
# 获取从索引 2 到数组末尾的元素
print(a[2:]) # 输出:[3 4 5]
示例 2:二维数组切片¶
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 获取第一行的所有元素
print(a[0, :]) # 输出:[1 2 3]
# 获取所有行的第二列元素
print(a[:, 1]) # 输出:[2 5 8]
五、拼接¶
可以使用 np.concatenate、np.vstack、np.hstack 等函数将多个数组拼接在一起。
示例 1:水平拼接¶
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 水平拼接
c = np.hstack((a, b))
print(c) # 输出:[[1 2 5 6]
# [3 4 7 8]]
示例 2:垂直拼接¶
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
# 垂直拼接
c = np.vstack((a, b))
print(c) # 输出:[[1 2]
# [3 4]
# [5 6]]
六、数学函数¶
Numpy 提供了丰富的数学函数,可以对数组进行各种数学运算。
示例 1:三角函数¶
a = np.array([0, np.pi / 2, np.pi])
# 计算正弦值
sin_a = np.sin(a)
print(sin_a) # 输出:[0.00000000e+00 1.00000000e+00 1.22464679e-16]
示例 2:指数和对数函数¶
a = np.array([1, 2, 3])
# 计算指数
exp_a = np.exp(a)
print(exp_a) # 输出:[ 2.71828183 7.3890561 20.08553692]
# 计算自然对数
log_a = np.log(a)
print(log_a) # 输出:[0. 0.69314718 1.09861229]
七、统计函数¶
Numpy 提供了许多用于统计分析的函数,可以方便地对数组数据进行统计计算。
示例 1:求和与平均值¶
a = np.array([[1, 2, 3], [4, 5, 6]])
# 求和
sum_a = np.sum(a)
print(sum_a) # 输出:21
# 计算平均值
mean_a = np.mean(a)
print(mean_a) # 输出:3.5
示例 2:最大值与最小值¶
a = np.array([[1, 2, 3], [4, 5, 6]])
# 获取最大值
max_a = np.max(a)
print(max_a) # 输出:6
# 获取最小值
min_a = np.min(a)
print(min_a) # 输出:1
八、总结¶
本讲义介绍了 Numpy 的一些基础操作,包括数据向量化、索引、切片、拼接、数学函数和统计函数。通过这些操作,我们可以高效地处理和分析数组数据。Numpy 是 Python 数据科学领域中不可或缺的工具,掌握这些基础操作将为后续的学习打下坚实的基础。