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

yipeiwu_com7年前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设计】。

相关文章

Python根据指定日期计算后n天,前n天是哪一天的方法

本文实例讲述了Python根据指定日期计算后n天,前n天是哪一天的方法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!/usr/bin/pyth...

tensorflow 固定部分参数训练,只训练部分参数的实例

在使用tensorflow来训练一个模型的时候,有时候需要依靠验证集来判断模型是否已经过拟合,是否需要停止训练。 1.首先想到的是用tf.placeholder()载入不同的数据来进行计...

使用python快速实现不同机器间文件夹共享方式

Python有一个比较好用的功能,那就是很方便的实现共享文件夹。 首先两台主机都需要安装python,在未建立逻辑连接之前它们是不区分主从机的。 例如:现在有两台机器,一台windows...

10种检测Python程序运行时间、CPU和内存占用的方法

10种检测Python程序运行时间、CPU和内存占用的方法

在运行复杂的Python程序时,执行时间会很长,这时也许想提高程序的执行效率。但该怎么做呢? 首先,要有个工具能够检测代码中的瓶颈,例如,找到哪一部分执行时间比较长。接着,就针对这一部分...

通过代码实例展示Python中列表生成式的用法

1 平方列表 如果你想创建一个包含1到10的平方的列表,你可以这样做: squares = [] for x in range(10): squares.append(x**2)...