Python 科学计算库Numpy使用

最近做机器学习的作业,作业也不难但是总是训练出一些反人类的结果(吐血),最后发现大多是因为对numpy库的使用不熟导致的。这里写个笔记记录一下。

(一)乘法对比

np.dot()和np.multiply和乘号(*)的区别

1.multiply和乘号的用法是一样的。
2.dot用来做矩阵乘法,multiply只是把对应位置相乘(不会求和)
具体见以下例子

import numpy as np

x = np.array([1,2,3])
y = np.array([1,2,1])
#对于一维数组,对应位置相乘然后把结果相加
print(np.dot(x,y))#output 8
#对应位置相乘
print(np.multiply(x,y))#output [1 4 3]
print(x*y)


x = np.array([[1,2],[3,4],[5,6]])
y = np.array([[1],[1]])
#对于矩阵,做矩阵乘法
print(np.dot(x,y))#output [[3],[7],[11]]

#要满足broadcast条件
print(np.multiply(x,y))#报错 ValueError: operands could not be broadcast together with shapes (3,2) (2,1) 
#把y换成满足broadcast条件的矩阵
y = np.array([[1,2]])
print(np.multiply(x,y))#output [[1,4],[3,8],[5,12]]
print(x*y)

(二)求和、求均值

np.sum()就是把矩阵、数组里面所有的元素加起来,np.mean就是把np.sum()的结果除以元素个数。其结果都是标量。

import numpy as np
x = np.array([[1,2],[3,4],[5,6]])
y = np.array([1,2,3])
print(np.sum(x))#output 21
print(np.sum(y))#output 6
print(np.mean(x))#output 3.5
print(np.mean(y))#output 2.0

写代码的时候一定要清楚现在做到这一步的结果是标量还是向量还是矩阵,别搞得稀里糊涂的啊喂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值