NumPy简介

NumPy 是 Python 中用于科学计算的核心库,提供了高效的多维数组(ndarray)和矩阵操作功能。它是许多数据科学、机器学习和科学计算库(如 Pandas、SciPy、Scikit-learn 等)的基础。以下是关于 NumPy 的详细介绍和使用指南:

1. NumPy 的核心功能

  • 多维数组:支持高效的数组操作(如索引、切片、广播等)。
  • 数学函数:提供丰富的数学函数(如三角函数、指数函数、统计函数等)。
  • 线性代数:支持矩阵运算(如矩阵乘法、求逆、特征值分解等)。
  • 随机数生成:提供多种随机数生成器。

2. 安装 NumPy

NumPy 可以通过 pip 安装:

pip install numpy

3. 创建数组

NumPy 的核心数据结构是 ndarray(N-dimensional array,多维数组)。

创建数组

import numpy as np

# 从列表创建数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)

# 创建全零数组
arr2 = np.zeros((3, 3))
print(arr2)

# 创建全一数组
arr3 = np.ones((2, 4))
print(arr3)

# 创建单位矩阵
arr4 = np.eye(3)
print(arr4)

# 创建等差数列
arr5 = np.arange(0, 10, 2)  # 从 0 到 10,步长为 2
print(arr5)

# 创建随机数组
arr6 = np.random.rand(3, 3)  # 3x3 的随机数组
print(arr6)

4. 数组操作

NumPy 提供了丰富的数组操作功能。

索引和切片

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 获取单个元素
print(arr[0, 1])  # 输出: 2

# 切片
print(arr[:2, 1:])  # 输出: [[2, 3], [5, 6]]

形状操作

# 改变数组形状
arr_reshaped = arr.reshape(1, 9)
print(arr_reshaped)

# 展平数组
arr_flattened = arr.flatten()
print(arr_flattened)

数组运算

# 逐元素加法
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2)  # 输出: [5, 7, 9]

# 矩阵乘法
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
print(np.dot(mat1, mat2))  # 输出: [[19, 22], [43, 50]]

5. 数学函数

NumPy 提供了丰富的数学函数。

基本数学函数

# 平方根
print(np.sqrt(arr1))

# 指数函数
print(np.exp(arr1))

# 对数函数
print(np.log(arr1))

统计函数

# 求和
print(np.sum(arr1))

# 平均值
print(np.mean(arr1))

# 标准差
print(np.std(arr1))

6. 线性代数

NumPy 提供了线性代数模块 numpy.linalg

矩阵运算

# 矩阵求逆
mat = np.array([[1, 2], [3, 4]])
inv_mat = np.linalg.inv(mat)
print(inv_mat)

# 特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(mat)
print("Eigenvalues:", eigenvalues)
print("Eigenvectors:", eigenvectors)

7. 随机数生成

NumPy 提供了多种随机数生成器。

生成随机数

# 生成随机浮点数
print(np.random.rand())  # 0 到 1 之间的随机数

# 生成随机整数
print(np.random.randint(0, 10))  # 0 到 10 之间的随机整数

# 生成正态分布随机数
print(np.random.normal(0, 1, size=(3, 3)))  # 均值为 0,标准差为 1 的 3x3 数组

8. 广播机制

NumPy 的广播机制允许对不同形状的数组进行逐元素操作。

广播示例

arr = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 2
print(arr + scalar)  # 输出: [[3, 4, 5], [6, 7, 8]]

9. 性能优化

NumPy 的底层实现使用 C 语言,性能非常高。以下是一些优化建议:

  • 避免 Python 循环:尽量使用 NumPy 的内置函数。
  • 使用视图而非副本:通过切片操作创建视图,避免复制数据。
  • 使用 np.einsum:高效实现复杂的矩阵运算。

10. 示例应用

计算欧几里得距离

def euclidean_distance(x, y):
    return np.sqrt(np.sum((x - y) ** 2))

x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print(euclidean_distance(x, y))  # 输出: 5.196

图像处理

from PIL import Image

# 读取图像
image = Image.open('image.jpg')
image_array = np.array(image)

# 灰度化
gray_image = np.dot(image_array[..., :3], [0.2989, 0.5870, 0.1140])
Image.fromarray(gray_image).show()

总结

  • NumPy 是 Python 中用于科学计算的核心库。
  • 提供了高效的多维数组和矩阵操作功能。
  • 支持数学函数、线性代数、随机数生成等高级功能。
  • 是数据科学、机器学习和科学计算的基础工具。
AI自动测试化入门到精通 文章被收录于专栏

如何做AI自动化测试

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务