python自带的sum()函数和numpy库中的sum()函数的区别

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33363973/article/details/78016839

在学习《机器学习实战》一书的第十章时,对

return np.sqrt(sum(np.power(vecA - vecB, 2)))

这样一条语句输出的结果老是不对,明明想要输出的是对两个列向量的差的平方求和后再开方,输出的应该是一个float型数值,但是这条语句执行后输出的却是一个包含两个值的行向量

matrix([[ 5.112672,  0.860815]])

而且我将这两个值分别平方后再相加,再开方就是我想要得到的值。
所以这让我意识到了python自带的sum()函数和numpy库中的sum()函数是有区别的,什么区别呢?
我们直接上代码,从代码的输出看区别
两者对list数据的处理方式区别
我们可以看出,对与list数据,python自带的sum()函数并不能处理我们想要计算的多行(或多列)list里所有数据的和;
两者对于matrix数据的处理方式区别
从这里又可以看出两者对与matrix类型数据的处理方式的不同,python自带的sum函数求得的是matrix类型数据的每一列的数据之和,输出结果为一个列数与原数据相同的matrix数据;而numpy库中的sum函数则求得的是整个matrix的所有数据之和,返回的是一个float型数值,故而,这就是为什么我最开始的语句输出的是一个matrix数据的原因了,这也是为什么原来的两个数值先平方再求和再开方后就是我们想要的数值的原因了。然后我们只需要将原来的语句换成

return np.sqrt(np.sum(np.power(vecA - vecB, 2)))

就可以了。

展开阅读全文

没有更多推荐了,返回首页