对Python 中矩阵或者数组相减的法则详解

yipeiwu_com6年前Python基础

最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下:

定义了一个计算损失的函数:

def error(yhat,label):
 yhat = np.array(yhat)
 label = np.array(label)
 error_sum = ((yhat - label)**2).sum()
 return error_sum

主要出现问题的是 yhat - label 部分,要强调的是一定要保证两者维度是相同的!这点很重要,否则就会按照python的广播机制进行运算,举个例子:

a = np.array([1,2,3])
a0 = np.array([[1],[2],[3]])
b = np.array([2,3,5,])
print(b-a)
print(b-a0)

这里a的维度是(3,),因为是由列表转化成的数组(当然不是很推荐这种维度,因为很容易犯错),a0的维度是(3,1),b的维度是(3,),a与b的维度相同,在计算b-a的时候,结果显而易见:

b - a0 的结果:

产生这种结果的原因是因为由于维度不同,在计算的时候将b变为了与a0同样的3行的数组,变化后b的维度变为了(3,3),等同于如下的计算:

b = np.array([[2,3,5],
    [2,3,5],
    [2,3,5]])
a0 = np.array([[1],
    [2],
    [3]])
b - a0

结果仍然为:

以上这篇对Python 中矩阵或者数组相减的法则详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Pytorch实现基于CharRNN的文本分类与生成示例

Pytorch实现基于CharRNN的文本分类与生成示例

1 简介 本篇主要介绍使用pytorch实现基于CharRNN来进行文本分类与内容生成所需要的相关知识,并最终给出完整的实现代码。 2 相关API的说明 pytorch框架中每种网络模型...

python查看FTP是否能连接成功的方法

本文实例讲述了python查看FTP是否能连接成功的方法。分享给大家供大家参考。具体如下: #!/usr/local/bin/python #-*- coding: UTF-8 -*...

Python+request+unittest实现接口测试框架集成实例

Python+request+unittest实现接口测试框架集成实例

1、为什么要写代码实现接口自动化 大家知道很多接口测试工具可以实现对接口的测试,如postman、jmeter、fiddler等等,而且使用方便,那么为什么还要写代码实现接口自动化呢?工...

Python利用正则表达式实现计算器算法思路解析

  (1)不使用eval()等系统自带的计算方法   (2)实现四则混合运算、括号优先级解析 思路:   1、字符串预处理,将所有空格去除   2、判断是否存在括号运算,若存在进行第3步...

python pandas消除空值和空格以及 Nan数据替换方法

在人工采集数据时,经常有可能把空值和空格混在一起,一般也注意不到在本来为空的单元格里加入了空格。这就给做数据处理的人带来了麻烦,因为空值和空格都是代表的无数据,而pandas中Serie...