numpy,一个必学的 Python 数学库!

文摘   2024-11-15 13:22   广东  


大家好,我是“橙子”。今天我们要学习的是 Python 中一个非常强大的数学库——numpy。如果你在做数据分析、机器学习或者科学计算,那么你一定会用到它。它为我们提供了高效的多维数组操作、矩阵运算、线性代数、随机数生成等功能,几乎是所有数据科学项目的基础工具。

这篇文章将带你快速了解 numpy 的基础知识,包括如何创建数组、如何进行常见的数组操作、如何进行数学计算等等。掌握 numpy,你就能轻松应对各种数据处理任务。准备好了吗?让我们开始吧!

安装 numpy

在开始之前,你需要先安装 numpy。如果你的环境中没有安装它,可以通过下面的命令来安装:

pip install numpy

安装完成后,我们就可以开始使用 numpy 进行数学计算了!

创建 numpy 数组

在 numpy 中,最常用的对象就是 ndarray(n 维数组)。我们可以通过 np.array() 来创建一个 numpy 数组。

创建一维数组

import numpy as np

# 创建一个一维数组
arr = np.array([12345])

# 打印数组
print(arr)

代码解析

  • np.array([1, 2, 3, 4, 5]) 创建了一个一维数组,包含了 1 到 5 的数字。
  • print(arr) 输出这个数组。

小贴士:numpy 数组和 Python 的列表非常相似,但 numpy 数组在进行大量计算时要比列表快得多。

创建二维数组

import numpy as np

# 创建一个二维数组
arr2d = np.array([[123], [456]])

# 打印二维数组
print(arr2d)

代码解析

  • np.array([[1, 2, 3], [4, 5, 6]]) 创建了一个 2x3 的二维数组,包含了 2 行 3 列的数据。
  • 输出结果是一个二维数组,每一行是一个列表。

小贴士:二维数组可以用来表示矩阵或表格数据,常用于线性代数和数据处理任务。

数组的基本操作

numpy 数组支持许多常见的数学操作和数组操作。让我们来看一些常见的数组操作。

数组加法

import numpy as np

arr1 = np.array([123])
arr2 = np.array([456])

# 数组加法
result = arr1 + arr2

print(result)

代码解析

  • arr1 + arr2 对两个数组进行逐元素加法运算,返回一个新的数组 [5, 7, 9]
  • 你可以使用类似的方式进行减法、乘法和除法操作。

数组形状和大小

import numpy as np

arr = np.array([[12], [34], [56]])

# 获取数组的形状
print(arr.shape)

# 获取数组的大小(元素个数)
print(arr.size)

代码解析

  • arr.shape 返回数组的形状,(3, 2) 表示这个数组有 3 行 2 列。
  • arr.size 返回数组的元素个数,这里是 6。

小贴士shape 返回的是一个元组,表示每一维的大小,size 返回数组中所有元素的总个数。

数组转置

import numpy as np

arr = np.array([[123], [456]])

# 转置数组
transposed = arr.T

print(transposed)

代码解析

  • arr.T 是 numpy 数组的转置操作,把行列交换。对于 2x3 数组,转置后会变成 3x2 数组。

小贴士:转置操作在进行矩阵计算时非常常见,特别是在线性代数中。

数学运算与广播

numpy 提供了大量的数学函数,可以直接在数组上进行运算。此外,numpy 的 广播(broadcasting)机制使得数组的运算更加灵活。

数学函数

import numpy as np

arr = np.array([14916])

# 计算平方根
sqrt_arr = np.sqrt(arr)

# 计算指数
exp_arr = np.exp(arr)

print(sqrt_arr)
print(exp_arr)

代码解析

  • np.sqrt() 计算数组元素的平方根,np.exp() 计算数组元素的指数。
  • 这些操作会逐元素应用到数组中。

小贴士:numpy 提供了大量的数学函数(如 sin(), cos(), log() 等),可以直接在数组上进行批量计算,非常方便。

广播机制

广播是 numpy 的一个强大功能,它允许不同形状的数组进行操作。numpy 会自动调整数组的形状,使得它们可以相互操作。

import numpy as np

arr1 = np.array([123])
arr2 = np.array([10])

# 广播机制:将 arr2 的 10 扩展为 [10, 10, 10],然后与 arr1 相加
result = arr1 + arr2

print(result)

代码解析

  • arr2 是一个标量数组 [10],通过广播机制,numpy 会自动将它扩展为 [10, 10, 10],然后与 arr1 执行加法运算。

小贴士:广播机制是 numpy 的一个核心特性,它让不同形状的数组也能够进行数学运算,避免了手动扩展数组的麻烦。

数组的切片和索引

与 Python 的列表类似,numpy 数组也支持切片和索引操作。我们可以根据条件或索引选择数组的某些元素。

选择数组中的特定元素

import numpy as np

arr = np.array([1020304050])

# 选择第 3 个元素
print(arr[2])

代码解析

  • arr[2] 返回数组中索引为 2 的元素,注意索引是从 0 开始的。

多维数组的切片

import numpy as np

arr = np.array([[123], [456], [789]])

# 选择第一行
print(arr[0])

# 选择第 2 列
print(arr[:, 1])

# 选择第二行第二列的元素
print(arr[11])

代码解析

  • arr[0] 返回数组的第一行,arr[:, 1] 返回数组的第二列,arr[1, 1] 返回第二行第二列的元素。

小贴士:numpy 的切片操作非常灵活,你可以选择整个行、列,或者根据条件筛选元素。

总结

今天我们学习了 numpy 的基础知识,包括如何创建数组、如何进行数组的基本操作、如何利用 numpy 提供的数学函数进行计算、如何使用广播机制、如何进行切片和索引操作。掌握 numpy,可以让你在数据处理、科学计算等领域游刃有余。

小贴士:numpy 的高效计算使得它成为数据分析和机器学习的必备工具。如果你从事这方面的工作,掌握 numpy 是非常重要的。

今天的 Python 学习之旅就到这里啦!记得动手敲代码,实践是最好的学习方式。祝大家学习愉快,Python 学习节节高!


梦起时分
关注我了解更多信息
 最新文章