网络编程
位置:首页>> 网络编程>> Python编程>> 对Python 中矩阵或者数组相减的法则详解

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

作者:Halo_Linch  发布时间:2024-01-02 01:29:17 

标签: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的时候,结果显而易见:

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

b - a0 的结果:

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

产生这种结果的原因是因为由于维度不同,在计算的时候将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 中矩阵或者数组相减的法则详解

来源:https://blog.csdn.net/dake13/article/details/80917932

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com