Skip to content

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:一维数组索引

a = np.array([10, 20, 30, 40])

# 访问第一个元素
print(a[0])  # 输出:10

# 访问最后一个元素
print(a[-1])  # 输出:40

示例 2:二维数组索引

a = np.array([[1, 2, 3], [4, 5, 6]])

# 访问第一行第二列的元素
print(a[0, 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.concatenatenp.vstacknp.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 数据科学领域中不可或缺的工具,掌握这些基础操作将为后续的学习打下坚实的基础。