【NumPy】NumPy实战入门:线性代数(dot、linalg)与随机数(numpy.random)详解

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。
📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服务,有需要可加文末联系方式联系。
💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

NumPy实战入门:线性代数(dot、linalg)与随机数(numpy.random)详解

  • [1. 前言](#1. 前言)
  • [2. NumPy库简介](#2. NumPy库简介)
  • [3. 线性代数模块](#3. 线性代数模块)
    • [3.1 numpy.dot --- 矩阵乘法](#3.1 numpy.dot — 矩阵乘法)
    • [3.2 numpy.linalg --- 矩阵分解](#3.2 numpy.linalg — 矩阵分解)
  • [4. 随机数模块](#4. 随机数模块)
    • [4.1 numpy.random.uniform---均匀分布](#4.1 numpy.random.uniform—均匀分布)
    • [4.2 numpy.random.normal---正态分布](#4.2 numpy.random.normal—正态分布)
    • [4.3 numpy.random.choice---随机抽样](#4.3 numpy.random.choice—随机抽样)
    • [4.4 numpy.random.shuffle---洗牌](#4.4 numpy.random.shuffle—洗牌)
  • [5. 总结](#5. 总结)

1. 前言

NumPy,全称为Numerical Python,是Python语言中最核心的科学计算包,它为大型多维数组和矩阵提供了高效的数据结构,以及大量的数学函数来操作这些数组。本文将深入探讨NumPy中的线性代数模块和随机数生成模块,通过示例代码展示其强大功能,并在最后进行总结。

2. NumPy库简介

NumPy的核心是其N维数组对象ndarray,它允许对元素进行矢量化运算,大大提高了计算效率。此外,NumPy还提供了广泛的数学函数,这些函数可以直接应用于数组上的每个元素,无需循环。这使得NumPy成为数据分析、机器学习、图像处理等领域不可或缺的工具。

3. 线性代数模块

3.1 numpy.dot --- 矩阵乘法

numpy.dot函数用于计算两个数组的点积或矩阵乘法。当输入是一维数组时,它计算的是内积;对于二维数组(矩阵),则是标准的矩阵乘法。

示例代码:

python 复制代码
import numpy as np

# 定义两个矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 计算矩阵乘积
C = np.dot(A, B)
print("矩阵乘积 C:\n", C)

3.2 numpy.linalg --- 矩阵分解

numpy.linalg子模块提供了各种矩阵分解方法,如求逆、特征值、奇异值分解等。

示例代码:

python 复制代码
import numpy as np

# 定义一个矩阵
A = np.array([[1, 2], [3, 4]])

# 计算矩阵的逆
A_inv = np.linalg.inv(A)
print("矩阵 A 的逆:\n", A_inv)

# 计算矩阵的特征值
eigenvalues, eigenvectors = np.linalg.eig(A)
print("矩阵 A 的特征值:\n", eigenvalues)

4. 随机数模块

numpy.random模块提供了丰富的随机数生成功能,支持多种概率分布。

4.1 numpy.random.uniform---均匀分布

使用numpy.random.uniform可以生成指定范围内的均匀分布随机数。

示例代码:

python 复制代码
import numpy as np

# 生成10个[0, 1)区间内的均匀分布随机数
uniform_numbers = np.random.uniform(size=10)
print("均匀分布随机数:\n", uniform_numbers)

4.2 numpy.random.normal---正态分布

numpy.random.normal用于生成正态分布(高斯分布)的随机数。

示例代码:

python 复制代码
import numpy as np

# 生成10个均值为0,标准差为1的正态分布随机数
normal_numbers = np.random.normal(loc=0, scale=1, size=10)
print("正态分布随机数:\n", normal_numbers)

4.3 numpy.random.choice---随机抽样

numpy.random.choice用于从给定的一维数组中随机抽取样本。

示例代码:

python 复制代码
import numpy as np

# 从数组[0, 1, ..., 9]中无放回抽取3个样本
samples = np.random.choice(10, size=3, replace=False)
print("随机抽样结果:\n", samples)

4.4 numpy.random.shuffle---洗牌

numpy.random.shuffle用于打乱数组顺序。

示例代码:

python 复制代码
import numpy as np

# 创建一个数组并进行洗牌
array = np.arange(10)
np.random.shuffle(array)
print("洗牌后的数组:\n", array)

5. 总结

NumPy的线性代数和随机数生成功能极大地扩展了Python在科学计算和数据处理方面的应用范围。通过高效的矩阵运算和灵活的随机数生成器,开发者能够轻松实现复杂的数据分析和模型构建。无论是进行大规模数据的统计分析,还是构建机器学习算法的基础,NumPy都扮演着至关重要的角色。掌握这些核心功能,将使你的Python编程之旅更加丰富多彩。

相关推荐
MarkHD10 小时前
第十一天 线性代数基础
线性代数·决策树·机器学习
竹笋常青10 小时前
《流星落凡尘》
django·numpy
星沁城14 小时前
240. 搜索二维矩阵 II
java·线性代数·算法·leetcode·矩阵
西柚小萌新1 天前
七.numpy模块
numpy
君臣Andy2 天前
【矩阵的大小和方向的分解】
线性代数·矩阵
勤劳的进取家2 天前
利用矩阵函数的导数公式求解一阶常系数微分方程组的解
线性代数
FreedomLeo13 天前
Python数据分析NumPy和pandas(二十三、数据清洗与预处理之五:pandas的分类类型数据)
python·数据分析·numpy·pandas·categoricals·数据分类分析·建模和机器学习
sz66cm3 天前
数学基础 -- 线性代数之线性无关
人工智能·线性代数·机器学习
herobrineAC3 天前
线代的几何意义(一)——向量,坐标,矩阵
线性代数·矩阵
Ricciflows3 天前
分析学大师Elias M. Stein的分析系列教材
线性代数·数学建模·矩阵·概率论·抽象代数·拓扑学·傅立叶分析