python中使用numpy包的向量矩阵相乘
一直对np的线性运算不太清晰,正好上课讲到了,做一个笔记整个理解一下
1.向量和矩阵
在numpy中,一重方括号表示的是向量vector,vector没有行列的概念。二重方括号表示矩阵matrix,有行列。
代码显示如下:
import numpy as np
a=np.array([1,2,3])
a.shape
#(3,)
b=np.array([[1,2,3],[3,4,5]])
b.shape
#(2, 3)
c=np.array([[1],[2],[3]])
c.shape
#(3, 1)
即使[1,2,3]、[[1,2,3]]看起来内容一样 使用过程中也会有完全不一样的变化。下面以向量乘法为例解释。
2.向量和向量乘法
1.* 对应对应位置相乘
普通的*:在numpy里表示普通的对应位置相乘,注意相乘的两个向量、矩阵要保证维数相同
a1=np.array([1,2,3])
a2=np.array([1,2,3])
a1*a2
#array([1, 4, 9])b1=np.array([[1,2,3]])
b2=np.array([[1,2,3]])
b1*b2
#array([[1, 4, 9]])b1=np.array([[1,2,3],[3,4,5]])
b2=np.array([[1,2,3],[3,4,5]])
b1*b2
# array([[ 1, 4, 9],
# [ 9, 16, 25]])
2.广播机制
如果单纯出现维数对不上,python会报error
b1=np.array([[1,2]])
b2=np.array([[1,2,3]])
b1*b2
#operands could not be broadcast together with shapes (1,2) (1,3)
但是,还有一种情况会出现乘出来一个好大的矩阵,这个情况常出现在无意之中把行、列的数字搞反的情况下。被称为广播机制,需要两个乘子都有一个维数是1,如果是对不上且不为1就会报错
Numpy中的广播机制,你确定正确理解了吗? - 腾讯云开发者社区-腾讯云
在普通的对应位置相乘,会出现
a1=np.array([1,2,3])
a3=np.array([[1],[2],[3]])
a1*a3#broadcast together
# array([[1, 2, 3],
# [2, 4, 6],
# [3, 6, 9]])
倒过来也会出现
a1=np.array([1,2,3])
a3=np.array([[1],[2],[3]])
a3*a1#broadcast together
# array([[1, 2, 3],
# [2, 4, 6],
# [3, 6, 9]])
3.向量点乘np.dot
必须要(行向量,列向量)形式的输入
a1=np.array([1,2,3])
a3=np.array([[1],[2],[3]])
np.dot(a3,a1)
#array([14])
#ValueError: shapes (3,1) and (3,) not aligned: 1 (dim 1) != 3 (dim 0)
都是行向量,不行
b1=np.array([[1,2,3]])
b2=np.array([[1,2,3]])
np.dot(b1,b2)
#shapes (1,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0)
都是列向量,触发广播机制
a1=np.array([[1,2,3]])
a3=np.array([[1],[2],[3]])
np.dot(a3,a1)
# array([[1, 2, 3],
# [2, 4, 6],
# [3, 6, 9]])
3.矩阵和向量乘法
1.对应位置相乘
如果单纯采用*的方式进行矩阵和向量乘法,那就是广播机制
矩阵+向量
A1=np.array([[1,2,3],[2,3,4]])
b1=np.array([1,2,3])
A1*b1 #broadcast together
# array([[ 1, 4, 9],
# [ 2, 6, 12]])
对应的向量如果是矩阵形式,结果相同
A2=np.array([[1,2,3],[2,3,4]])
b2=np.array([[1,2,3]])
A2*b2 #broadcast together
# array([[ 1, 4, 9],
# [ 2, 6, 12]])
相似的,如果维数对不上,不会触发广播机制
A3=np.array([[1,2,3],[2,3,4]])
b3=np.array([[1],[2],[3]])
A3*b3 #operands could not be broadcast together with shapes (2,3) (3,1)
2.矩阵乘法
如果真正想要算矩阵*向量的矩阵乘法,要用np.dot
A4=np.array([[1,2,3],[2,3,4]])
b4=np.array([1,2,3])
np.dot(A4,b4)#dot product
#array([14, 20])
列向量也有类似结果
A4=np.array([[1,2,3],[2,3,4]])
b4=np.array([[1],[2],[3]])
np.dot(A4,b4)#dot product
# array([[14],
# [20]])
4.矩阵矩阵乘法:
1.直接相乘
同样,也是对应位置相乘
A4=np.array([[1,2,3],[2,3,4]])
B4=np.array([[1,2,3],[4,5,6]])
A4*B4
# array([[ 1, 4, 9],
# [ 8, 15, 24]])
有广播机制
A4=np.array([[1,2,3],[2,3,4]])
B4=np.array([[1,2,3]])
A4*B4
# array([[ 1, 4, 9],
# [ 2, 6, 12]])
2.np.dot:
需要第一个的列数和第二个的行数相对应
A4=np.array([[1,2,3],[2,3,4]])
B4=np.array([[1,2,3],[4,5,6]])
np.dot(A4,B4.T)
# array([[14, 32],
# [20, 47]])A5=np.array([[1,2,3],[2,3,4]])
B5=np.array([[1,2,3],[4,5,6],[7,8,9]])
np.dot(A5,B5)
# array([[30, 36, 42],
# [42, 51, 60]])
对不上会报错
A4=np.array([[1,2,3],[2,3,4]])
B4=np.array([[1,2,3],[4,5,6]])
np.dot(A4,B4)
# shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)
相关文章:
python中使用numpy包的向量矩阵相乘
一直对np的线性运算不太清晰,正好上课讲到了,做一个笔记整个理解一下 1.向量和矩阵 在numpy中,一重方括号表示的是向量vector,vector没有行列的概念。二重方括号表示矩阵matrix,有行列。 代码显示如下: …...
ElasticSearch 学习(一)
目录一、Elasticsearch 简介二、Elasticsearch 发展史三、Elasticsearch 功能四、Elasticsearch 特点五、Elasticsearch 应用场景一、Elasticsearch 简介 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据…...
【新】华为OD机试 - 交换字符(Python)| 刷完获取OD招聘渠道
交换字符 题目 给定一个字符串 S 变化规则: 交换字符串中任意两个不同位置的字符 M S 都是小写字符组成 1 <= S.length <= 1000 输入 一串小写字母组成的字符串 输出 按照要求变换得到最小字符串 示例一 输入 abcdef输出 abcdef示例二 输入 bcdefa输出 acde…...
手把手教你解决传说中的NPE空指针异常
1. 前言最近有好几个初学java的小伙伴,甚至是学习到了JavaWeb、框架阶段的小伙伴也跑来问壹哥,该如何解决Java中的NullPointerException空指针异常。因为NPE是初学者特别常见的典型异常,所以壹哥在这里专门写一篇文章,来手把手地教…...
【pytorch安装】conda安装pytorch无法安装cpu版本(完整解决过程)
问题描述 在安装pytorch过程中,发现最后验证torch时总是返回结果为False,结果翻上去发现自己安装的是cpu版本的。 然后又通过conda去更换不同版本尝试,发现都是cpu版本的。 问题分析 通过conda安装pytorch是从源中搜索匹配指令中的文件&am…...
云计算ACP云服务器ECS实例题库
😘作者简介:一名99年软件运维应届毕业生,正在自学云计算课程。👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。&…...
面试题:作用域、变量提升、块级作用域、函数作用域、暂存性死区、var和let的区别
<script>var a 10;(function () {console.log(a)a 5console.log(window.a)var a 20;console.log(a)})() </script> 上述代码: 1、主要是涉及到变量提升和函数作用域,var a20这行代码会在函数作用域中提升var a 至最顶部…...
JAVA练习49-爬楼梯
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-爬楼梯 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 2月13日练习内容…...
深兰科技机器人商丘制造基地正式投产,助力商丘经济高质量发展
2月9日,深兰科技机器人商丘制造基地投产仪式在商丘市梁园区北航创新园隆重举行。商丘市人大常委会副主任、梁园区委书记张兵,梁园区区长薛天江、河南省装备制造业协会会长张桦,河南省机器人行业协会会长王济昌,深兰科技集团董事长…...
ES倒排索引/查询、写入流程
ES学习笔记 Elasticsearch学习笔记_巨輪的博客-CSDN博客 Elasticsearch学习之图解Elasticsearch中的_source、_all、store和index属性_BUse的博客-CSDN博客 倒排索引 倒排索引:ES倒排索引底层原理及FST算法的实现过程_es fst_Elastic开源社区的博客-CSDN博客 【…...
2023软考考哪个证书好?
软考有三个级别(初级,中级和高级),这三个级别分别对应5个方向,下面这张图片呢,可以一目了然,一些小小建议!!!遵循一个原则:首先选专业对口的科目&…...
一般人我劝你不要自学软件测试!!!
本人5年测试经验,在学测试之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说:自学软件测试,一般人我还是劝你算了吧?因为我就是那个一般人! 软件测试基础真的很简单&…...
docker/docker-compose 安装mysql5.7
目录使用docker安装mysql5.7docker普通安装docker生产环境安装使用docker-compose 安装注意注意一:docker-compose权限问题注意二:docker pull 找不到镜像使用docker安装mysql5.7 docker普通安装 docker pull mysql:5.7 # 启动容器 docker run -p 3306:3306 --name mysql -e …...
【C++设计模式】学习笔记(6):Bridge 桥模式
目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…...
Allegro如何批量快速修改复用好的模块操作指导
Allegro如何批量快速修改复用好的模块操作指导 在做PCB设计的时候,相同模块可以用reuse复用的功能,可以大大提升效率,但是模块需要修改的时候,其它模块也要跟着修改,逐个再去复用一遍比较费时间,Allegro支持批量快速修改复用好的模块 前提是相同模块必须是相同的mdd文件…...
让我百思不得其解的infer究竟是怎么推导类型的?
情景再现 有这么一个条件类型的基本语法: T extends U ? X : Y; 如果占位符类型U是一个可以被分解成几个部分的类型,譬如数组类型,元组类型,函数类型,字符串字面量类型等。这时候就可以通过infer来获取U类型中某个部分的类型。 …...
E8-怎么实现根据表单内容自动生成标题
背景 可能有些小伙伴看到这个话题,觉得非常简单,在发起人步骤设置标题可编辑,在有关的控件中设置事件去更新标题就可以了呗。但如果想要标题字段里包含编号呢,而编号是在具体路径的高级设置里设置的,在某个出口生成的…...
《c语言深度解剖》--一套非常经典的笔试题
学习完c语言,需要对所学知识进行一个检测,下面有一套笔试题, 你有四十分钟进行检测,每道题五分,严格要求自己打分。 根据作者原话:在没有何提示的情况下,如果能得满分,那你可以扔掉本书了,因为你的水平已经…...
【数据结构与算法】单调队列 | 单调栈
🌠作者:阿亮joy. 🎆专栏:《数据结构与算法要啸着学》 🎇座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉…...
openh264解码h264视频帧主流程
一 解析一帧的入口int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNalUnit pNalCur) {// 解码slicePDqLayer pCurDqLayer pCtx->pCurDqLayer;PFmo pFmo pCtx->pFmo;int32_t iRet;int32_t iNextMbXyIndex, iSliceIdc;PSlice pSlice &a…...
专业做佛山市办公家具工厂的服务商
在竞争激烈的商业世界中,办公家具的选择对于企业来说至关重要。它不仅关乎员工的工作舒适度和效率,更体现着企业的形象和品味。今天,就为大家介绍一家专业做佛山市办公家具的工厂服务商——佛山市豪亿办公家具。一、直击用户痛点,…...
5步解决开发者的Mac性能波动难题
5步解决开发者的Mac性能波动难题 【免费下载链接】Turbo-Boost-Switcher Turbo Boost disabler / enable app for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/tu/Turbo-Boost-Switcher 问题溯源:为何你的Mac总是"时快时慢" 当你在进行视…...
wvp-GB28181-pro企业级视频监控平台架构设计与高可用部署指南
wvp-GB28181-pro企业级视频监控平台架构设计与高可用部署指南 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标…...
【Python机器学习】零基础掌握SGDOneClassSVM线性分类器
如何高效地识别异常数据点? 在数据分析、金融风控、网络安全等多个领域,识别异常数据点是一个常见但又具有挑战性的问题。传统的方法可能需要复杂的计算和专门的知识背景,但有没有一种更简单、更直观的方式来解决这个问题呢? 假设一个金融公司需要识别可能的欺诈信用卡交…...
数据库的undo和redo日志
本文介绍undo和redo日志的一般概念,不涉及具体某个数据库的实现细节,参考资料来自《数据库系统实现》的第六章《系统故障对策》。一个假设和四个操作原语一个假设假设数据库由元素组成。为了简化讨论,这里假设元素是磁盘块,并且元…...
【仅限首批200家认证企业获取】Python智能内存管理策略矩阵V3.2(含K8s+PyTorch混合负载内存QoS配置模板)
第一章:Python智能体内存管理策略企业级应用场景在高并发、长生命周期的AI服务系统中,Python智能体(如基于LangChain或LlamaIndex构建的RAG代理、多轮对话引擎)常因对象驻留、闭包捕获、全局缓存失控导致内存持续增长,…...
免费AI视频生成工具技术解析与功能对比
AI视频生成技术在2026年取得了显著进展,从早期的简单动画到如今的高质量视频输出,底层技术架构经历了多次迭代。本文将从技术角度解析当前主流免费AI视频生成工具的技术原理、架构特点和功能参数,为开发者和技术从业者提供参考。AI视频生成技…...
Pixel Aurora Engine 工业设计渲染:生成产品概念图与材质表现
Pixel Aurora Engine 工业设计渲染:生成产品概念图与材质表现 1. 工业设计渲染的新标杆 在工业设计领域,概念图的快速生成和材质表现一直是设计师面临的核心挑战。传统3D建模软件虽然功能强大,但学习曲线陡峭,渲染耗时漫长。而P…...
Notepad++ 插件构想:集成Phi-4-mini-reasoning实现轻量级代码智能
Notepad 插件构想:集成Phi-4-mini-reasoning实现轻量级代码智能 1. 为什么Notepad需要AI插件 作为一个经典的轻量级文本编辑器,Notepad凭借其简洁高效的特点赢得了全球开发者的喜爱。但随着AI技术的快速发展,传统编辑器在代码智能辅助方面的…...
intv_ai_mk11效果展示:对复杂问题(如‘Transformer与CNN在NLP任务中差异’)的分层解析能力
intv_ai_mk11效果展示:对复杂问题的分层解析能力 1. 引言:AI对话机器人的进阶能力 在众多AI对话系统中,intv_ai_mk11展现出了独特的优势——它不仅能回答简单问题,更能对复杂技术概念进行结构化解析。今天我们将重点展示它在处理…...

