python3 numpy中矩阵np.dot(a,b)乘法运算

python np.dot(a,b)乘法运算

首先我们知道矩阵运算是不满足交换律的,np.dot(a, b)与np.dot(b, a)是不一样的
另外np.dot(a,b)和a.dot(b)果是一样的

1.numpy中数组(矩阵)相乘np.dot(a,b)运算:

对于两数组a和b :
示例一:

a = np.array([[3], [3], [3]])  # (3,1)
b = np.array([2, 2, 1])  # (3,)print(a, "\na的shape", a.shape)
print(b, "\nb的shape", b.shape)
c = b.dot(a)
print(c, "\nc的shape",  c.shape)

输出:

 [3][3]] 
a的shape (3, 1)
[2 2 1] 
b的shape (3,)
[15] 
c的shape (1,)

示例二:

a = np.array([[2,2,2,1],[3,3,3,1],[4,4,4,4]])  # shape=(3,4)
b = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])  # shape=(4,3)

可以直接看他们的shape:a的shape为(3, 4)设为(m, n);b的shape为(4, 3)设为(x, y)
对于上面两个数组a,b:
np.dot(a,b)的运算条件为:n==x,如果a的shape变为(4, 3)则两则无法dot

  • 简单来说规律就是:如果a.shape=(m,n),b.shape=(x,y)那么**np.dot(a,b)**的运算条件为:n=x (这一点用于在python理解和快速判断数组的shape是否用对了)
  • 实际上数组运算的规律将两个数组画出来,是这样的:
    在这里插入图片描述
    也就是矩阵的乘法运算

2.np.dot(a,b)运算之后的结果解析

规律:dot之后会将两组数组中相等的(符合dot条件的)维度消掉,得到剩下的维度组合成新的数组,如果剩下只有一个维度则为行(对应一维),列是无
对于a.shape=(m,n),b.shape=(x,y)
dot之后n和x会消掉,结果shape变成(m,y)
如果n为1(或者空),shape变为(y,)
e.g1:

a = np.array([1,1,1]) # shape=(3,)
b = np.array([[3],[3],[3]]) # shape=(3,1)print(np.dot(a,b))
print("dot之后的shape为:", np.dot(a,b).shape)

那么,3和3消掉,剩下只有一个数1,对应1行没有列==>(1,)
运算结果:
[9]
dot之后的shape为:(1,)

e.g2:

a.shape=(4,1) 
b.shape=(1,4)

那么( 1和1消掉,剩下(4,4) )
np.dot(a,b)的shape为(4,4)

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

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

相关文章

MySQL数据库优化的八种方式(经典必看)

引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂 偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中&#…

class_create和class_device_create

//主要是在/sys/class/ 下创建一个 “name”的文件夹 !从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东…

OSError: [Errno 22] Invalid argument:**

OSError: [Errno 22] Invalid argument: 在使用open打开文件时,出现报错 OSError: [Errno 22] Invalid argument: H:\\GitRepository\neural-networks-and-deep-learning\\data\\mnist_expanded.pkl.gzpython3 可以将 \ 换为 / ,或者换成 \ 但是最简单…

阅读英文论文的方法总结(三遍法)

1.title 2.abstract 3.introduction 4.method 5.experiments 6.conclusion 第一遍:标题、摘要、结论,看是否自己研究的相关,看完之后可以看部分实验和方法里的关键图和表,这样可以花费十几分钟时间了解到论文是否适合你的研究方向…

ML Backpropagation算法的计算过程举例

Backpropagation计算过程举例 初始权重(initialize weights)是随机产生的(如-1~1之间) 初始化可以选择均值为0,方差为1/n_in的正态分布,n_in为输入的实例个数,Python中可使用np.random.normal函数来初始化权重: np.random.normal…

Python基础知识__字符串

字符串介绍 一. 认识字符串 字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单&#xff0c;只要为变量分配一个值即可。 a hello world b "abcdefg" print(type(a)) print(type(b)) 注意&#xff1a;控制台显示结果为<cl…

Android uevent

Android很多事件都是通过uevent跟kernel来异步通信的。其中类UEventObserver是核心。 UEventObserver接收kernel的uevent信息的抽象类。 1、server层代码 1)battery server: frameworks/base/services/java/com/android/server/SystemServer.java frameworks/base/services/j…

ssh 命令行通过私钥登录其它设备

ssh -i root(私钥文件) rootIP (被访问的服务器IP) 这里备份一下了 转载于:https://www.cnblogs.com/zhja/p/6211195.html

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

VScode Code Runner无法运行JavaScript&#xff08;js文件&#xff09; 原因&#xff1a; 未安装Node.js 解决方法&#xff1a; https://nodejs.org/en/ 下载Nodejs&#xff0c;安装完之后&#xff0c;重启VScode&#xff0c;会自动配置&#xff0c;运行即可在终端看到结果。

智慧交通day03-车道线检测实现01:车道线检测概述

项目简介 汽车的日益普及在给人们带来极大便利的同时&#xff0c;也导致了拥堵的交通路况&#xff0c;以及更为频发的交通事故。而自动驾驶技术的出现可以有效的缓解了此类问题&#xff0c;减少交通事故&#xff0c;提升出行效率。 国内外检测车道线的方法主要有两类&#xf…

vsphere平台windows虚拟机克隆的小插曲(无法登陆系统)

问题&#xff1a; 1、克隆完windows虚拟化后输入法乱码。 2、开启远程的情况下远程登录输入正确的密码也无法登录。 解决&#xff1a; 1、更改管理员用户密码&#xff08;不输入原win7密码更改win7密码&#xff09;。 2、重新启用管理员。 3、重启系统 不输入当前密码改win密码…

JavaScript 打印结果时多出一个undefined/出现undefined

JavaScript 打印结果时多出一个undefined/出现undefined 1.检查是否变量未初始化. 如下图&#xff0c;未初始化值就拿来使用&#xff0c;结果会出现undefined. var newStr;修正方法为:定义的同时给变量赋一个值&#xff0c;如不需要值&#xff0c;可以赋空值""&…

智慧交通day03-车道线检测实现02-1:相机校正

1. 相机标定的意义 我们所处的世界是三维的&#xff0c;而照片是二维的&#xff0c;我们可以把相机认为是一个函数&#xff0c;输入量是一个场景&#xff0c;输出量是一幅灰度图。这个从三维到二维的过程的函数是不可逆的。 相机标定的一个目的是要找一个合适的数学模型&#…

把输入字符的小写转换成大写并输出

#include <stdio.h> #include <stdlib.h> #include <string.h> /******************************* *把小写字母转成大写字母 ********************************/ int main(void) { char *srcNULL;unsigned char i0;char *new_1NULL;char *new_2NULL;char *dN…

关于一些html和css2的知识点

前端开大语言三种:1)HTML(hypertext markup language)结构2)css(Cascading Style Sheets)样式 3)js(Javascript)行为 脚本语言 属性:属性值 用来描述标签的一些特征的关键词 关于css样式的引入方式 一共有三种 1)行间样式表(写在标签的开始标记上) 2)内部样式 写在<styl…

nginx服务无法启动,启动时报错1067以外终止

解决方法&#xff1a; 首先cmd命令打开&#xff0c;输入nginx -t测试配置文件是否能运行OK&#xff0c;如果报错bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a …) 则说明配置文件中的端口0.0.0.0:80被占用 可使用下面两种方法解决&#xff1a; cmd输…

智慧交通day03-车道线检测实现02-2:张氏标定法+双目标定

6.张氏标定法 张氏标定法是张正友博士在1999年发表在国际顶级会议ICCV上的论文《Flexible Camera Calibration By Viewing a Plane From Unknown Orientations》中&#xff0c;提出的一种利用平面棋盘格进行相机标定的实用方法。 该方法介于传统标定法和自标定法之间&#xff…

指针的基本操作(10.1 Basic Pointer Operations)

[This section corresponds to K&R Sec. 5.1] The first things to do with pointers are to declare a pointer variable, set it to point somewhere, and finally manipulate the value that it points to. A simple pointer declaration looks like this: 对指针的第…

C/C++中的声明与定义

含义 声明(Declaration), 用于告诉编译器被声明的函数/变量的存在, 及它们的类型/调用格式信息, 以检查是否被正确调用. 声明不分配内存空间. 定义(Definition), 用于告诉编译器被声明的函数/变量的存在位置, 会分配内存空间. 变量/函数在被使用之前一定要被声明. 声明和定义可…