前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从机器学习学python(四) ——numpy矩阵广播及一些技巧

从机器学习学python(四) ——numpy矩阵广播及一些技巧

作者头像
用户1327360
发布2018-03-07 17:01:14
1.6K0
发布2018-03-07 17:01:14
举报
文章被收录于专栏:决胜机器学习决胜机器学习

从机器学习学python(四)——numpy矩阵广播及一些技巧

(原创内容,转载请注明来源,谢谢)

在学ng的深度学习微专业时,其中有几节课讲到numpy的一些基本用法,主要是广播。

1、基本运算

考虑下面一个3*4的矩阵,要给每列求和,并且要求出每个元素占本列的百分比,这里不需要用到for循环,直接用numpy的方法即可。

假设矩阵A是3*4的矩阵,则B=A.sum(axis=0)返回的是对矩阵A每一列求和结果的行向量,同理A.sum(axis=1) 返回的是对矩阵A每一行求和结果的列向量。

接下来要求百分比,就用到广播的概念,由于A是3*4的矩阵,B是1*4矩阵,在数学上A/B是没法进行的,但是numpy中,如果用A/B,则会把B扩充成3*4的向量,然后再对应元素相除。

2、广播的通用规则

对于(m,n)矩阵A,(1,n)矩阵B,A与B进行运算(包含加减乘除,下同),则都会将B扩充成(m,n),且每一行的值都一样,都是由第一行扩充出来的。

这并不会改变B的值,而是在内存中进行临时的扩充,目的是为了计算出结果。

同理,B是(m,1)时,会扩充成(m,n)。另外行、列向量,对一个实数进行加减乘除,则会将实数扩充成同等形状的行、列向量后,再运算,具体见下图:

3、一些建议

ng给的一个建议,是最好不要用到秩是1的矩阵,而要将其转为n行1列的矩阵,这样计算起来比较不容易发生问题。

下面是不好的示例,可以看到由于秩是1,故转置前后矩阵是一样的:

下面是好的示例:

当已经有一个秩是1的矩阵,也可以通过reshape方法将其转为正常的矩阵:

——written by linhxx 2018.01.31

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决胜机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档