一、加减乘除运算

  1. 张量(数组)之间的+、-、*、/,在python支持自动Broadcast机制。不过不是所有的张量之间都支持,需要进行普适性判断
    Broadcasting普适性判断:
    首先将两个shape靠右对齐,
    对于长度为1的维度,默认这个数据普遍适合于当前维度的其他位置;
    对于不存在的维度,则在增加新维度后默认当前数据也是普适于新维度的,从而可以扩展为更多维度数、任意长度的张量形状。
    若对齐之后shape对应维度的值都大于1且不相等,则不满足。例如:
a.shape:(2,32,32,4),b.shape:(2,1,32,4),c.shape:(2,32,4),d.shape:(2,32,32,2)
a*b满足普适性 b会自动扩展为(2,32,32,4)
a*c不满足普适性
a*d不满足普适性
  1. 张量之间的加减乘除运算要求张量维度一样或者满足普适性原则(自动扩展后维度一样)
  2. 张量之间的加减乘除运算都是逐元素的,满足交换律
import numpu as np
a = np.array([1,2,3])
b = np.array([2,2,3])
a*b:array([2, 4, 9])
b*a:array([2, 4, 9])
  1. 可以通过np.sum和运算符*实现向量投影
a = np.array([1,2,3])
b = np.array([2,2,3])
c = np.sum(a*b,0)/np.linalg.norm(b) # 向量a在向量b上的投影
  1. 可以通过np.sum和运算符*实现类似np.dot的效果,例如将多组向量批量旋转到世界坐标系
# dirs 是相机坐标系的多组向量构成的,dirs.shape:(1024,1024,3),即1024*1024组方向向量
# c2w 是由相机坐标系变换到世界坐标系的矩阵(视图矩阵的逆矩阵)
# c2w[:3, :3] 是视图矩阵中旋转矩阵的转置
world_dirs = np.sum(dirs[..., np.newaxis, :] * c2w[:3, :3], -1)
# 以上代码实现效果类似于c2w@dirs,但由于dirs.shape是(1024,1024,3),虽然意义上是1024*1024组方向向量
# 但实际存储是将dirs作为多维数组
# 所以c2w@dirs(属于下面⑤):(3,3)X(1024,1024,3)不满足普适性,不能用矩阵乘法

二、矩阵相乘运算

  1. 方式:可以通过@运算符;可以通过np.dot;可以通过tf.mutmul函数
  2. 通过上述方式进行运算时,若两个张量均是二维矩阵则即是普通的矩阵乘法,而其他类型有所不同,具体如下:
    np.dot(a,b)
    ①如果a、b均是1维数组,则为向量内积
    ②如果a、b均是2维数组,则均为矩阵乘法
    ③如果a或b是标量,则与上述运算符*相同
    ④如果a是N(>=2)维数组,b是1维数组,进行运算时,会首先将后面一项进行自动转置操作并将1维数组自动转换为矩阵,之后再进行矩阵乘法运算,最后结果还原成N阶向量
    注意不满足交换律,np.dot(a,b)和np.dot(b,a)结果都是N阶向量,但向量元素值不一样
    注意,在numpy中,若b.shape:(3,1)则代表b是一维矩阵,与向量不同,若此时a@b则属于第二类,是矩阵乘法,结果为(N,1)的矩阵
    ⑤如果a是N(N>2)维数组,b是M(M>=2)维数组,则采用批量方式,选择a和b的最后两个维度进行矩阵相乘,前面所有的维度都视作Batch维度。
    根据矩阵相乘的定义,

    Python中的数学运算相关推荐

    1. Python中的数学运算操作符使用进阶

      原文链接:https://www.jb51.net/article/86988.htm 这篇文章主要介绍了Python中的数学运算操作符使用进阶,也包括运算赋值操作符等基本知识的小结 Python中对 ...

    2. 捋一捋Python中的数学运算math库(上篇)

      正式的Python专栏第18篇,同学站住,别错过这个从0开始的文章! 很多学习编程的都多多少少学习了一些数学知识. 学委之前也简单吐槽了 Python中奇葩的round函数! 这篇我们讲讲那些常用的数 ...

    3. [转载] Python中的数学函数,三角函数,随机数函数

      参考链接: Python中的数学math函数 3(三角函数和角函数) 数学函数 函数返回值 ( 描述 )abs(x)返回数字的绝对值,如abs(-10) 返回 10ceil(x)返回数字的上入整数,如 ...

    4. linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算

      在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

    5. linux中bc用法英文,使用GNU bc在Linux Shell中进行数学运算

      在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

    6. Python中的方根运算及对数运算公式

      Python中的方根运算及对数运算公式 在Python中,我们可以使用math模块来进行方根及对数运算.下面是一些常用的代码示例: 计算平方根 使用math.sqrt(x)函数可以计算一个数的平方根. ...

    7. Microsoft Excel 教程:如何在 Excel 中进行数学运算?

      欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel 的使用技巧,了解如何在 Excel 中进行数学运算,而不是使用计算器.可以输入简单的公式来对两个或多个数 ...

    8. Python 中的位运算-基础知识

      目录 1.编码基础知识-原码.反码.补码 1.1 原码 1.2 反码 1.3 补码 2.Python 中的位运算 2.1 左移运算符(<<) 2.2 右移运算符(>>) 2.3 ...

    9. python基础(四)python中的位运算

      (一)python中的位运算   位运算即按位(bitwise)运算,python中的位运算符有&.|.^.~.>>.<<.具体的:   & 按位与运算符:参与 ...

    10. python中mod运算符_Python中的数学运算操作符使用进阶

      Python中对象的行为是由它的类型 (Type) 决定的.所谓类型就是支持某些特定的操作.数字对象在任何编程语言中都是基础元素,支持加.减.乘.除等数学操作. Python的数字对象有整数和浮点数, ...

    最新文章

    1. OpenCV+python:顶帽、黑帽、形态学梯度
    2. 在CentOS 6.8 x86_64上安装nghttp2最新版及让curl具有http2特性
    3. 使用ansible部署安装corosync+pacemaker
    4. 如何在jupyter notebook中运行markdown文件(脚本、代码)
    5. leetcode 926. Flip String to Monotone Increasing | 926. 将字符串翻转到单调递增(前缀和)
    6. linux应用程序课程设计,linux操作系统与应用课程设计 .pdf
    7. docker之使用supervisor管理多个进程
    8. MySQL的NULL值
    9. 动手学深度学习(PyTorch实现)(三)--过拟合与欠拟合
    10. java基础-02数据类型
    11. kafka 常见问题( 持续更新... ... )
    12. python 鱼骨图_面向对象编程,鱼骨图分析法
    13. 企业级内网环境搭建教程
    14. access计算机二级改工号,Access新手来看:如何更改表/窗体/报表...得名字
    15. mysql类型float_Mysql数据类型---FLOAT
    16. php源码 学校版 cms,S-CMS学校建站系统PHP源码(含小程序) v5.0 bulid20201126
    17. 看故事也能长知识,CPU的工作原理原来这么简单!
    18. 华硕笔记本电脑突然失去WIFI功能
    19. 矩阵乘法、转置矩阵、对称矩阵
    20. 即席查询(Ad Hoc)入门(Kylin)

    热门文章

    1. java 夏令时_Java里面的夏令时
    2. 怎么直接运行js文件
    3. c++项目——聊天室——第一节
    4. JavaScript - 通过居民身份证号码获取年龄和性别(函数封装)
    5. 采访了 10 位身价过亿的 CEO,我终于看懂了有钱人的“奋斗”
    6. 计算机考试当场出分,基金从业资格考试当场出成绩吗?
    7. w ndows无法安装未知设备,Win7安装驱动程序时提示“unknown device(未知设备)”如何解决...
    8. 【网络与信息安全】 2019年-中国计算机学会推荐国际学术会议和期刊目录(三)
    9. cadence allegro - PCB线路敷铜渲染
    10. c语言8bit转10bit,10bit视频转码成8bit视频教程(非常简单)