python矩阵运算和⼴播机制_对Python中矩阵或者数组相减的
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 中矩阵或者数组相减的法则详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论