NumPy 数值计算基础课程

NumPy 数值计算基础课程

介绍

如果你使用 Python 语言进行科学计算,那么一定会接触到 NumPy。NumPy 是支持 Python 语言的数值计算扩充库,其拥有强大的多维数组处理与矩阵运算能力。除此之外,NumPy 还内建了大量的函数,方便你快速构建数学模型。

NumPy 的英文全称为 Numerical Python,意味着它是 Python 面向数值计算的第三方库。NumPy 的特点在于,扩展了 Python 内建的数组类型,支持更高维度的数组和矩阵运算,以及更丰富的数学函数。

NumPy 是 Scipy.org 中最重要的库之一,它也被 Pandas、Matplotlib 等其他常见的第三方库作为核心计算库。当你单独安装这些库时,你会发现它们同时会安装 NumPy 作为依赖。

课程知识点

  • 数值类型及多维数组

  • 数组操作及随机抽样

  • 数学函数及代数运算

  • 数组索引及其他用法

NumPy 数组类型

NumPy 提供了比 Python 本身更为丰富的数值类型,涵盖了多种精度的整数、浮点数和复数类型。这些数值类型在 NumPy 中被归于 dtype 对象的实例中,我们可以用 dtype 参数在数组中指定数值类型。

数值类型

  • bool:布尔类型,值为 True 或 False。

  • int:整数类型,通常为 int32 或 int64。

  • float32float64:单精度和双精度浮点数。

  • complex64complex128:复数,由两个浮点数表示。

示例代码:

import numpy as np

a = np.array([1.1, 2.2, 3.3], dtype=np.float64)
print(a, a.dtype)  # 查看数组及其数据类型

你也可以使用 .astype() 方法在不同的数值类型之间相互转换:

a.astype(int)  # 将数组的数值类型从 float64 转换为 int

NumPy 数组生成

在 Python 内建对象中,数组有三种形式:列表、元组和字典。而 NumPy 提供了更强大的 ndarray 多维数组对象,支持高维度的数据处理。

数组创建方式

NumPy 提供了多种方法创建数组,包括从 Python 数组结构转换、使用内置函数创建等。

  • 从 Python 数组结构转换

    np.array([[1, 2, 3], [4, 5, 6]])
  • 使用 NumPy 原生方法创建

    • 使用 arange() 创建等差数组:

      np.arange(3, 7, 0.5)  # 创建从 3 到 7 的等差数组,步长为 0.5
    • 使用 ones() 创建全为 1 的数组:

      np.ones((2, 3))  # 创建 2 行 3 列的数组,值全为 1
    • 使用 zeros() 创建全为 0 的数组:

      np.zeros((3, 2))  # 创建 3 行 2 列的数组,值全为 0
    • 使用 eye() 创建单位矩阵:

      np.eye(3)  # 创建 3x3 单位矩阵
  • 使用 linspace() 创建等距数值数组

    np.linspace(0, 10, 10, endpoint=True)  # 在 0 到 10 之间生成 10 个等距数值
  • 使用随机函数创建数组

    np.random.rand(2, 5)  # 生成 2 行 5 列的随机数组,值在 [0, 1) 之间

数组基本操作

NumPy 提供了多种方法对数组进行操作,例如重设形状、展开、轴移动和转置。

数组重设形状

reshape() 方法可以不改变数组数据的情况下改变其形状。

np.arange(10).reshape((5, 2))  # 将 1 维数组重设为 5 行 2 列

数组展开

ravel() 可以将任意形状的数组扁平化,变为 1 维数组。

a = np.arange(10).reshape((2, 5))
np.ravel(a)  # 将二维数组展开为一维数组

轴交换和数组转置

使用 swapaxes()transpose() 可以交换数组的轴。

np.transpose(a)  # 转置数组 a

维度改变

NumPy 提供了 atleast_1d(), atleast_2d(), atleast_3d() 等方法,可以将输入数据直接视为指定维度的数组。

print(np.atleast_2d([4, 5, 6]))  # 将一维数组转换为二维数组

数组索引和切片

NumPy 的多维数组支持完整的 Python 数组索引语法,我们可以通过索引值访问特定位置的元素。

一维数据索引

一维数组的索引和 Python 列表相似,可以通过索引值访问特定位置的元素。

a = np.arange(10)
print(a[1])  # 获取索引值为 1 的数据

多维数据索引

多维数组的索引使用逗号分割不同维度的索引值。

a = np.arange(20).reshape(4, 5)
print(a[1, 2])  # 获取第 2 行,第 3 列的数据

数组切片

NumPy 里面针对多维数组的切片操作和 Python 列表的切片操作相似,使用 : 表示范围。

a = np.arange(20).reshape(4, 5)
print(a[0:3, 2:4])  # 先取第 3、4 列,再取第 1、2、3 行

你还可以指定步长,例如:

a[:, ::2]  # 每隔两列取值

数组操作与运算

NumPy 提供了丰富的数学函数和数组操作方法,帮助你高效地完成科学计算任务。

数学函数

NumPy 提供了三角函数、对数函数、指数函数等多种数学函数,可以直接对数组进行运算。

np.sin(a)  # 计算数组 a 中每个元素的正弦值
np.log(a)  # 计算数组 a 中每个元素的自然对数

算术运算

你可以对 NumPy 数组进行加减乘除等算术运算。

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.add(a, b))  # 对应元素相加
print(np.multiply(a, b))  # 对应元素相乘

统计运算

NumPy 提供了用于统计数组中数据的函数,例如求和、求均值等。

print(np.sum(a))  # 计算数组 a 中所有元素的和
print(np.mean(a))  # 计算数组 a 的均值

随机数生成

NumPy 的随机模块 numpy.random 提供了多种生成随机数的方法。

  • 生成随机数

    np.random.rand(3, 3)  # 生成 3x3 的随机数组,值在 [0, 1) 之间
  • 生成随机整数

    np.random.randint(1, 10, size=(2, 3))  # 生成 2x3 的随机整数数组,值在 [1, 10) 之间
  • 随机抽样

    np.random.choice(10, 5)  # 从 0-9 中随机抽取 5 个数

实验总结

本次课程主要学习了 NumPy 的使用方法和技巧,包括数值类型、多维数组、数组的创建方法和基本操作。NumPy 是 Python 中进行数值计算和科学计算的基础工具,它提供了强大的数组操作和数学函数,极大地提升了数据分析和数学运算的效率。

通过 NumPy,科学计算变得更加简单、直观。它为数组的创建、操作和运算提供了丰富的方法,能够满足我们在数据科学和工程计算中的各种需求。希望大家通过不断练习加深对这些方法的理解,并将其应用于实际问题的解决中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值