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

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

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)))

就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值