numpy矩阵相加时需注意的一个点
今天在进行numpy矩阵相加的时候出现了一个小的奇怪的地方,下面我们来看看:
>>>P = np.array([1,2,3,4])
>>>F = np.array([9,8,7,6]).reshape((4,1))
>>>P + F
array([[10, 11, 12, 13],
[ 9, 10, 11, 12],
[ 8, 9, 10, 11],
[ 7, 8, 9, 10]])
咦,怎么会这样,P和F明明都是一维的向量,怎么相加之后成了4×4的矩阵。其实,这和大名鼎鼎的矩阵计算的广播机制有关。再看下面
>>>P = P.reshape((4,1))
>>>P + F
array([[10],
[10],
[10],
[10]])
这个时候就符合我们的预期了。
造成上述两次加法结果不同的原因在于,第一次相加的时候P的形状没有被明确指定,结果相加的时候numpy的广播机制起了作用。一个矩阵加上一个常数,等于矩阵的每一个值都加上这个常数。这就是最常见的广播机制了。上述的第一种情况就是使得矩阵F的每一行分别加上P中不同的值,得到每一行的结果1×4的向量,最终结果也就是4×4了。
numpy矩阵相加时需注意的一个点的更多相关文章
- <R语言编程艺术>的一个错误以及矩阵相加
R语言编程艺术讲矩阵这节时,举了个随机噪声模糊罗斯福总统画像的例子.但是里面似乎有个错误,例子本意是区域外的值保持不变,而选定区域的值加一个随机值,但是实际情况是两个行列不相等的矩阵相加,会报错,如果 ...
- numpy 矩阵在作为函数参数传递时的奇怪点
numpy 矩阵在作为函数参数传递时的奇怪点 import numpy as np class simpleNet: def __init__(self): self.W = np.array([1, ...
- 给numpy矩阵添加一列
问题的定义: 首先我们有一个数据是一个mn的numpy矩阵现在我们希望能够进行给他加上一列变成一个m(n+1)的矩阵 import numpy as np a = np.array([[1,2,3], ...
- Java编程提高性能时需注意的地方
1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面 第一,控制资源的使用,通过线程同步来控制资 ...
- Web API核查表:设计、测试、发布API时需思考的43件事[转]
Web API核查表:设计.测试.发布API时需思考的43件事 当设计.测试或发布一个新的Web API时,你是在一个原有的复杂系统上构建新的系统.那么至少,你也要建立在HTTP上,而HTTP则是 ...
- Numpy 矩阵库(Matrix)
Numpy 中包含了一个矩阵库 numpy.matlib, 该模块中的函数返回的是一个矩阵, 而不是 ndarray 对象. 一个 m * n de 矩阵是一个 有 m 行(row) n 列(colu ...
- NumPy 矩阵库(Matrix)
NumPy 矩阵库(Matrix) NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象. 一个 的矩阵是一个由行(row)列(col ...
- python之numpy矩阵库的使用(续)
本文是对我原先写的python常用序列list.tuples及矩阵库numpy的使用中的numpy矩阵库的使用的补充.结合我个人现在对线性代数的复习进度来不断更博. Section 1:行列式的计算 ...
- NumPy矩阵库
NumPy - 矩阵库 NumPy 包包含一个 Matrix库numpy.matlib.此模块的函数返回矩阵而不是返回ndarray对象. matlib.empty() matlib.empty()函 ...
随机推荐
- JavaScript实现队列结构
参考资料 一.什么是队列结构? 1.1.简介 队列(Queue),类似于栈结构,但又和栈结构不同 是一种运算受限的线性表,受限之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rea ...
- java-五大内存图
jrm—Java虚拟机在进行程序运行时会向cpu申请一个内存约为10%左右,该内存被jrm分为5大区域 一:栈内存(stack)用来存储变量 当栈消失时,变量也随之消失.二:堆内存(heap)在Jav ...
- TensorFlow的checkpoint文件转换为pb文件
由于项目需要,需要将TensorFlow保存的模型从ckpt文件转换为pb文件. import os from tensorflow.python import pywrap_tensorflow f ...
- C#基础之方法的重载
在C#语言中,方法的重载作用非常大,但是使用重载需要注意方法的签名,必须有一种要不一样,具体指的是: 1.方法的返回值类型 2.方法的形参类型 3.形参类型的顺序 4.形参的个数 4.泛型的类型< ...
- [JavaWeb基础] 007.Struts2的配置和简单使用
1.框架简介 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架,用于快速开发Java Web应用.Struts实现的重点在C(Controller), ...
- PreparedStatement实现表数据的增删改 & 封装数据库链接和关闭操作
PreparedStatement实现表数据的增删改 PreparedStatementUpdateTest package com.aff.PreparedStatement; import jav ...
- DataFrame-选择与切片
取得DataFrame对象reviews的description列的前10个值(或者说reviews前10行的description列): reviews.iloc[:10].loc[:,'descr ...
- Beta冲刺——5.24
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.安排每个人进行为期3天的 ...
- vim的常见操作
vim常见操作 复制 yank, y yy:复制整行 nyy/yny y^/y0:复制当前行到行头的内容 y$:复制当前到行尾的内容 yw:复制一个word nyw/ynw 复制n个word yG:复 ...
- 面试题: SpringBoot 的自启动原理
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 引言 不论在工作中,亦或是求职面试,Spring Boot 已经成为我们必知必会的技能项.除了比较老旧的 ...