对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设计】。

相关文章

Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例

本文实例讲述了python找到最大或最小的N个元素实现方法。分享给大家供大家参考,具体如下: 问题:想在某个集合中找出最大或最小的N个元素 解决方案:heapq模块中的nlargest(...

结合Python的SimpleHTTPServer源码来解析socket通信

结合Python的SimpleHTTPServer源码来解析socket通信

何谓socket 计算机,顾名思义即是用来做计算。因而也需要输入和输出,输入需要计算的条件,输出计算结果。这些输入输出可以抽象为I/O(input output)。 Unix的计算机处理...

跟老齐学Python之从格式化表达式到方法

现在我们就格式化方法做一个详细一点的交代。 基本的操作 所谓格式化方法,就是可以先建立一个输出字符串的模板,然后用format来填充模板的内容。 复制代码 代码如下: >>&...

Python常见读写文件操作实例总结【文本、json、csv、pdf等】

本文实例讲述了Python常见读写文件操作。分享给大家供大家参考,具体如下: 读写文件 读写文件是最常见的IO操作,python内置了读写文件的函数,用法和c是兼容的. 读写文件前,我们...

python实现简单点对点(p2p)聊天

python实现简单点对点(p2p)聊天

点对点聊天首先是基于多线程的网络编程,其次就是将每一个连接都保存为一个具有独一属性的对象并添加到连接列表中,对于每一个连接对象发送过来的信息必须要包含主要的三项内容(from,to,me...