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

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。

📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服务,有需要可加文末联系方式联系。

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

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

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

在这里插入图片描述

1. 前言

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

2. NumPy库简介

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

3. 线性代数模块

3.1 numpy.dot — 矩阵乘法

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

示例代码:

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子模块提供了各种矩阵分解方法,如求逆、特征值、奇异值分解等。

示例代码:

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可以生成指定范围内的均匀分布随机数。

示例代码:

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用于生成正态分布(高斯分布)的随机数。

示例代码:

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用于从给定的一维数组中随机抽取样本。

示例代码:

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用于打乱数组顺序。

示例代码:

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

5. 总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Modular RPG Hero PBR

-掩码着色着色器提供了无限的颜色变化。(适用于标准/HDRP/URP 11.0.0) -为剑与盾/双剑/双剑姿态提供了简单的角色控制器。(不包括弓和魔杖控制器)(它是用旧的输入系统建造的) -HDRP/URP(11.0.0)SRP 100%支持常规着色器和遮罩着色着色器(基于着色器图形) -具有许多模块…

rtk技术的使用, test ok

1. 什么是gnss 2 rtk定位

逻辑回归模型的背景与应用

1.1逻辑回归模型的背景与应用 逻辑回归模型,作为一种经典的机器学习方法,起源于统计学领域。在众多实际应用场景中,逻辑回归模型都发挥着重要作用,尤其在分类问题中。当我们需要对具有离散特征的数据进行建模和预测时&#xff0c…

五分钟部署开源运维平台Spug结合内网穿透实现远程登录管理

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

移除元素-力扣

第一种解法&#xff0c;暴力解法&#xff0c;使用两个for循环一个进行遍历&#xff0c;一个进行覆盖&#xff0c;代码如下&#xff1a; class Solution { public:int removeElement(vector<int>& nums, int val) {int size nums.size();for(int i 0; i < size; …

C语言中的 ?: :三元运算符详解

C语言中的 ?: &#xff1a;三元运算符详解 在C语言的浩瀚代码海洋中&#xff0c;三元运算符&#xff08;?:&#xff09;如同一位优雅的舞者&#xff0c;以简洁的姿态完成条件判断与赋值的双重任务。它以问号&#xff08;?&#xff09;和冒号&#xff08;:&#xff09;这两个…

Linux完整版命令大全(九)

4. linux压缩备份命令 ar 功能说明&#xff1a;建立或修改备存文件&#xff0c;或是从备存文件中抽取文件。语  法&#xff1a;ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]补充说明&#xff1a;ar可让您集合许多…

Spring boot 注入成员变量HttpServletRequest的原理

前言 最近做项目&#xff0c;springboot项目&#xff0c;本来我们在controller的requestmapping取参数值或者返回写时&#xff0c;使用方法参数&#xff0c;但是发现老项目直接注入了成员变量&#xff0c;Spring本身是单例的&#xff0c;如果是成员变量注入&#xff0c;那么也…

【C语言】指针(三)

目录 一、字符指针 1.1 ❥ 使用场景 1.2 ❥ 有关字符串笔试题 二、数组指针 2.1 ❥ 数组指针变量 2.2 ❥ 数组指针类型 2.3 ❥ 数组指针的初始化 三、数组指针的使用 3.1 ❥ 二维数组和数组名的理解 3.2 ❥ 二维数组传参 四、函数指针 4.1 ❥ 函数的地址 4.2 ❥ 函数…

JAVA面试题大全(十一)

1、为什么要使用 hibernate&#xff1f; 对JDBC访问数据库的代码做了封装&#xff0c;大大简化了数据访问层繁琐的重复性代码基于jdbc的主流持久化框架&#xff0c;是一个优秀的ORM实现&#xff0c;很大程度的简化了dao层的编码工作使用java的反射机制性能好&#xff0c;是一个…

【STL】C++ list 基本使用

目录 一 list 常见构造 1 空容器构造函数&#xff08;默认构造函数&#xff09; 2 Fill 构造函数 3 Range 构造函数 4 拷贝构造函数 二 list迭代器 1 begin && end 2 rbegin && rend 三 list 容量操作 四 list 修改操作 1 assign 2 push_front &a…

【深度学习中的数据预处理技巧:提升模型性能的关键步骤】

文章目录 前言数据标准化&#xff08;Normalization&#xff09;数据增强&#xff08;Data Augmentation&#xff09;缺失值处理&#xff08;Handling Missing Values&#xff09;特征编码&#xff08;Feature Encoding&#xff09;结论 前言 在深度学习领域&#xff0c;数据预…

牛客NC362 字典序排列【中等 DFS Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/de49cf70277048518314fbdcaba9b42c 解题方法 DFS&#xff0c;剪枝Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回…

【小笔记】如何在docker中更新或导入neo4j数据?

如何在docker中更新或导入neo4j数据&#xff1f; &#xff08;1&#xff09;背景&#xff1a; 我尝试了4.4.9和5.19.0版本的Neo4j社区版&#xff0c;基于他们的镜像创建容器后&#xff0c;需要导入我准备好的csv文件或dump文件&#xff0c;因为数据量非常大&#xff0c;所以采…

2024电工杯数学建模B题Python代码+结果表数据教学

2024电工杯B题保姆级分析完整思路代码数据教学 B题题目&#xff1a;大学生平衡膳食食谱的优化设计及评价 以下仅展示部分&#xff0c;完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1&#xff1a;1名男大学生的一日食谱.xlsx) df1# 获取所有工作表名称 e…

HarmonyOS-MPChart绘制一条虚实相接的曲线

本文是基于鸿蒙三方库mpchart&#xff08;OpenHarmony-SIG/ohos-MPChart&#xff09;的使用&#xff0c;自定义绘制方法&#xff0c;绘制一条虚实相接的曲线。 mpchart本身的绘制功能是不支持虚实相接的曲线的&#xff0c;要么完全是实线&#xff0c;要么完全是虚线。那么当我…

面试总结之:socket线路切换

"socket线路切换"通常指的是在网络通信过程中,根据当前网络状态或策略来动态更换数据传输路径的技术。这种技术可以提高通信的可靠性和性能。 在实际应用中,线路切换可能涉及到多种技术,例如: 负载均衡:根据每条路径的当前负载情况,动态地选择一条较为空闲的路…

MySql超大Sql文件导入效率优化 —— 筑梦之路

使用场景 日常我们对mysql数据库、mariadb数据库进行定时备份&#xff0c;而随着时间增长&#xff0c;导出来的备份文件越来越大&#xff0c;使用备份sql文件进行还原的时候&#xff0c;大文件非常慢&#xff0c;有些要执行很长时间&#xff0c;效率很低。 如何优化&#xff…

根据多个坐标经纬度获取到中心点的经纬度,scala语言

文章目录 前言scala 代码 总结 前言 Scala 语言 通过多个经纬度坐标点, 计算出中心点, 这里使用的是 Scala 语言,其他的语言需要自行转换。求出来的并不是原有的点&#xff0c;而是原有点的中心位置的点。 scala 代码 package com.dw.process.midimport java.lang.Double.pa…

C语言 | Leetcode C语言题解之第97题交错字符串

题目&#xff1a; 题解&#xff1a; bool isInterleave(char* s1, char* s2, char* s3) {int n strlen(s1), m strlen(s2), t strlen(s3);int f[m 1];memset(f, 0, sizeof(f));if (n m ! t) {return false;}f[0] true;for (int i 0; i < n; i) {for (int j 0; j &l…