numpy学习笔记7:np.dot(a, b) 详细解释
numpy学习笔记7:np.dot(a, b) 详细解释
np.dot(a, b) 函数详解
np.dot(a, b) 是 NumPy 中用于计算两个数组的点积或矩阵乘法的核心函数。其行为根据输入数组的维度不同而变化,以下是详细说明:
1. 输入为两个一维数组(向量)
-
作用:计算向量内积(对应元素相乘后求和)。
-
公式:结果=∑i=1nai⋅bi结果=∑i=1nai⋅bi。
-
示例:
import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) result = np.dot(a, b) # 1*4 + 2*5 + 3*6 = 32 print(result) # 输出: 32
2. 输入为一个二维数组(矩阵)和一个一维数组(向量)
-
作用:矩阵与向量的乘法,结果为向量。
-
条件:矩阵的列数必须等于向量的长度。
-
示例:
matrix = np.array([[1, 2], [3, 4]]) # 形状 (2, 2) vector = np.array([5, 6]) # 形状 (2,) result = np.dot(matrix, vector) # [1*5 + 2*6, 3*5 + 4*6] = [17, 39] print(result) # 输出: [17 39]
3. 输入为两个二维数组(矩阵)
-
作用:矩阵乘法。
-
条件:第一个矩阵的列数必须等于第二个矩阵的行数。
-
示例:
a = np.array([[1, 2], [3, 4]]) # 形状 (2, 2) b = np.array([[5, 6], [7, 8]]) # 形状 (2, 2) result = np.dot(a, b) # [[1*5+2*7, 1*6+2*8], [3*5+4*7, 3*6+4*8]] print(result) # 输出: [[19 22], [43 50]]
4. 输入为高维数组(三维及以上)
-
作用:沿指定轴求和,遵循张量乘法规则。
-
规则:
np.dot(a, b)对a的最后一个轴和b的倒数第二个轴进行乘积求和。 -
示例:
a = np.ones((2, 3, 4)) # 形状 (2, 3, 4) b = np.ones((2, 4, 5)) # 形状 (2, 4, 5) result = np.dot(a, b) # 形状 (2, 3, 2, 5)
-
结果形状推导:保留
a的前两个轴(2, 3)和b的后两个轴(2, 5),合并中间的维度4。
-
5. 输入包含标量
-
作用:标量与数组的普通乘法。
-
示例:
a = 5 b = np.array([1, 2, 3]) result = np.dot(a, b) # 等同于 5 * b → [5, 10, 15] print(result) # 输出: [5 10 15]
6. 与 @ 运算符和 np.matmul() 的区别
| 功能 | np.dot(a, b) | a @ b 或 np.matmul(a, b) |
|---|---|---|
| 一维数组 | 内积(标量) | 外积(错误,需显式处理) |
| 高维数组 | 张量积(按最后两轴计算) | 广播矩阵乘法(按最后两轴计算) |
| 标量乘法 | 支持 | 不支持(需显式乘法) |
7. 常见错误与注意事项
-
维度不匹配:
a = np.array([[1, 2], [3, 4]]) # 形状 (2, 2) b = np.array([1, 2, 3]) # 形状 (3,) np.dot(a, b) # 报错:shapes (2,2) and (3,) not aligned
-
性能优化:对大型数组,
np.dot()默认使用优化后的 BLAS 库(如 Intel MKL),效率极高。 -
内存共享:结果数组是新的对象,不与输入数组共享内存。
总结
-
一维数组 → 向量内积。
-
二维数组 → 矩阵乘法。
-
高维数组 → 张量积(沿特定轴计算)。
-
标量 → 普通乘法。
-
替代操作:
@运算符更适用于矩阵乘法,np.dot()更通用。
相关文章:
numpy学习笔记7:np.dot(a, b) 详细解释
numpy学习笔记7:np.dot(a, b) 详细解释 np.dot(a, b) 函数详解 np.dot(a, b) 是 NumPy 中用于计算两个数组的点积或矩阵乘法的核心函数。其行为根据输入数组的维度不同而变化,以下是详细说明: 1. 输入为两个一维数组(向量&#…...
Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流
GPT-SoVITS GPT-SoVITS- v2(v3也可以,两者对模型文件具有兼容) 点击后 会进入新的游览器网页 ----- 看了一圈,发现主要问题集中在模型的训练很需要CPU,也就是模型的制作上,问题很多,如果有现有…...
Django初窥门径-Django REST Framework 基础使用
前言 在现代 Web 开发中,构建高效、安全且易于维护的 API 至关重要。Django REST framework(简称 DRF)作为 Django 生态中的强大工具,为开发者提供了创建 RESTful API 所需的完整解决方案。本文将详细介绍如何使用 Django 和 DRF 构建一个用户管理 API,涵盖环境配置、序列…...
LoRA中黑塞矩阵、Fisher信息矩阵是什么
LoRA中黑塞矩阵、Fisher信息矩阵是什么 1. 三者的核心概念 黑塞矩阵(Hessian) 二阶导数矩阵,用于优化问题中判断函数的凸性(如牛顿法),或计算参数更新方向(如拟牛顿法)。 Fisher信息矩阵(Fisher Information Matrix, FIM) 统计学中衡量参数估计的不确定性,反映数据…...
Redis哈希槽机制的实现
Redis哈希槽机制的实现 Redis集群使用哈希槽(Hash Slot)来管理数据分布,整个集群被划分为固定的16384个哈希槽。当我们在集群中存储一个键时,Redis会先对键进行哈希运算,得到一个哈希值。然后,Redis将该哈…...
docker pull 提示timeout
通过命令行拉取对应的mysql版本提示网络超时。 开始排查,首先确认是否能浏览器访问。ok的,可以正常访问。 终端curl 排查嗯 有问题 改了下 终端 vim ~/.zshrc 加入 export HTTP_PROXY"http://127.0.0.1:7890" export HTTPS_PROXY"…...
(超详细) ETL工具之Kettle
Kettle简介 kettle最早是一个开源的ETL工具,后命名为Pentaho Data Integration。由JAVA开发,支持跨平台运行,其特性包括:支持100%无编码、拖拽方式开发ETL数据管道,可对接包括传统数据库、文件、大数据平台、接口、流…...
Android第三次面试总结(网络篇)
在计算机网络领域,网络模型是理解通信原理的基础框架。本文将详细解析 OSI 参考模型和 TCP/IP 模型的分层结构、核心功能及实际应用,并通过对比帮助读者建立完整的知识体系。 一、OSI 参考模型:七层架构的理论基石 OSI(开放系统…...
国产编辑器EverEdit - Hex Dump插件:看到文本的另一面!
1 Hex Dump插件 1.1 应用场景 有时可能需要显示字母的ASCII编码,或其他文字的字节编码,可以使用Hex Dump插件来完成 1.2 使用方法 安装Hex Dump插件,安装插件方法参考:扩展管理 在编辑器中选中文本,选择扩展 -> …...
random_masking 函数测试
文章目录 1. description2. excel3. pytorch code 1. description 功能:按一定比例的随机部分样本,简单来说就是按照一定的比例将行向量从小到大的顺序提取出来。思考1: 用了均匀分布,并且按照一定比例,取前prob概率来…...
TDengine 中的流式计算
简介 TDengine 中的流计算,功能相当于简化版的 FLINK , 具有实时计算,计算结果可以输出到超级表中存储,同时也可用于窗口预计算,加快查询速度。 创建流式计算 CREATE STREAM [IF NOT EXISTS] stream_name [stream_o…...
Java 大视界 -- Java 大数据在智慧交通自动驾驶仿真与测试数据处理中的应用(136)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
k8s中的组件
1.namespace Namespace 用于将集群资源划分为不同的逻辑组,方便管理和隔离 kubectl get namespace 查看所有逻辑组 kubectl describe namespace <namespace-name> 查看某个逻辑组信息详情 kubectl create namespace ... 创建逻辑组 kubectl delete names…...
JVM的一些知识
JVM简介 JVM 是 Java Virtual Machine 的简称,意为 Java 虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。常见的虚拟机:JVM、VMwave、Virtual Box。 JVM 和其他两个虚拟机的区别: VMw…...
【安全运营】用户与实体行为分析(UEBA)浅析
目录 用户与实体行为分析(UEBA)简介一、UEBA的核心概念1. 行为基线建立2. 异常检测3. 风险评分4. 上下文关联 二、UEBA的应用场景1. 内部威胁检测2. 外部威胁应对3. 合规性和审计支持 三、UEBA的技术实现1. 大数据技术2. 机器学习算法3. 可视化工具 四、…...
sql小记,20250319
ps:基于sqlserver 一、绩效管理系统表设计 1.表设计 Users用户表:包含id,用户名,密码。 AppraisalBases评价(职位基数)表:包含职位id,职位年终奖基数 AppraisalCoeffcients评价系数表:包含类别id, 类别&…...
C语言每日一练——day_7
引言 针对初学者,每日练习几个题,快速上手C语言。第七天。(连续更新中) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…...
Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹
引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…...
C#的简单工厂模式、工厂方法模式、抽象工厂模式
工厂模式是一种创建型设计模式,主要将对象的创建和使用分离,使得系统更加灵活和可维护。常见的工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式,以下是 C# 实现的三个案例: 简单工厂模式 简单工厂模式通过一个工厂类来创建…...
用hexo初始化博客执行hexo init时碰到的问题
用hexo初始化博客执行hexo init时碰到的问题 $ hexo init myblog INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git fatal: unable to access https://github.com/hexojs/hexo-starter.git/: SSL certificate problem: unable to get local issuer cer…...
4.1--入门知识扫盲,ISO知识体系介绍(看一遍,协议啥的全部记住)
OSI七层模型:网络世界的"七重天"生存指南(附快递小哥版图解) “如果你觉得网络分层很抽象,那就想象自己在寄快递” —— 来自一个被三次握手逼疯的程序员 开场白:网络通信就像送外卖 假设你要给隔壁妹子送奶…...
AI训练如何获取海量数据,论平台的重要性
引言:数据——AI时代的“新石油” 在人工智能和大模型技术飞速发展的今天,数据已成为驱动技术进步的 “ 燃料 ”。无论是训练聊天机器人、优化推荐算法,还是开发自动驾驶系统,都需要海量、多样化的数据支持。 然而,获…...
Axure高级功能深度解析一一高效原型设计的利器
Axure作为一款专业的原型设计工具,凭借其强大的功能和灵活的交互设计,成为了众多设计师和开发者的首选。本文将深入探讨Axure的高级功能,帮助大家更好地利用这款工具,提升原型设计的效率和质量。 一、Axure高级功能概览 • 变量管…...
QT国产化系统软件开发
一、国产操作系统 1、鸿蒙HarmonyOS NEXT 核心架构 采用自研鸿蒙内核,完全脱离Linux与AOSP代码,基于分布式架构实现跨设备资源虚拟化整合,支持动态调度多终端硬件能力。通过分布式软总线技术(D-Bus)实现低时延…...
Git 使用SSH登陆
一、SSH介绍 SSH连接相比于HTTP连接会简单一点,因为SSH连接通过了私钥与公钥进行身份认证,这样就不需要像HTTP一样,每次clone或者操作仓库都需要输入密码 其中私钥和密钥是需要在自己电脑上生成的,通过命令即可生成一个私钥和一个…...
织梦DedeCMS修改文章【标题、短标题、关键词】长度限制
在后台虽然可以设置标题的长度,但是数据库的字段固定是60个字符,短标题是36字符,关键词30字符,所以这里教大家修改一下织梦DedeCMS修改【标题】【短标题】【关键词】长度限制 一、后台配置 1、进入dede后台管理 -> 系统 ->…...
Powershell WSL部署ubuntu22.04.5子系统
前提条件WSL 安装 wsl 安装参考1wsl 安装csdn参考2wsl 百度网盘离线下载 本地目录安装ubuntu22.04.5 子系统 powershell 管理员打开执行(实现,下载安装ubuntu子系统,用户创建,远程ssh登录设置,防火墙端口开放)子系统IP 查看方法wsl...
umi自带的tailwindcss修改为手动安装
1》为什么改为手动? 主要是为了解决这个报错问题,虽然重新运行也可解决,但是总是要运行2-3次,比较麻烦 2》如何手动 1,先在devDependencies下安装这两个包 pnpm install postcss8.5.1 -D "autoprefixer"…...
Android 13 Launcher3最近任务列表“全部清除“按钮位置优化实战
一、问题背景与实现难点 在Android 13横屏设备开发中,系统默认将最近任务列表的"全部清除"按钮布局在屏幕左侧,这与用户习惯的底部布局存在明显差异。相较于Android 8.1时代SystemUI模块的实现,Android 13将相关逻辑迁移至Launche…...
基于k3s部署Nginx、MySQL、SpringBoot和Redis的详细教程
1. 安装k3s集群 1.1 单节点快速部署 # 使用root或sudo权限执行 curl -sfL https://get.k3s.io | sh -# 验证安装 sudo kubectl get nodes # 输出应为Ready状态 sudo systemctl status k3s1.2 配置kubectl权限(可选) mkdir -p ~/.kube sudo cp /etc/r…...
