解读一篇Numpy好文

1

最近工作太忙,每次回家洗洗就不想再开电脑码字了,写了也近两年了,习惯了,时间久了,不写都欲罢不能。


尤其是有了好的点子,或者对某个概念或理论有了新的解读、新的展示形式、学习到别人新的讲解时,我都会忍不住,不假思索的占用休息时间来码字,一同与关注我的人,尤其是一直晚上习惯读到我文章的老铁们,共同奋进,这种感觉就是支撑我做下去的最大力量。


2

上周分享了一篇:盘一盘 NumPy (上),出自王圣元兄的盘点笔记。这几天,我抽时间仔细学习了下,真的有种醍醐灌顶的感觉,写的真是太好了。在如今公众号推文遍地都是走流量的情况下,王兄仍能坚持初心,用心血回馈我们这些广大读者,心中充满对其敬畏之情。


就在昨天,在我分享了:六月总结和思考后,有位读者深有感触,我想应该是说出了很多很多粉丝们的心声:


640?wx_fmt=jpeg


是啊,真正的有价值的原创不是那么容易就被会搜到的,更多的被搜到大都是一致,甚至雷同,简单的堆砌。


3

为了满足这位读者和更多粉丝们的期待,我今晚一回来就靠在床头上,奋笔疾书,就是因为王兄的这篇讲解Numpy的文章,真是做到了:能把事情说清楚,让人醍醐灌顶,并且完全是毫无保留的,免费的贡献出来。


这也应了那句:任何伟大的事情,都由一个微不足道的开始,王兄的这篇盘点Numpy看似微不足道,但却在如今的公众号领域所赋予的意义重大。


4

下面附上我对圣元兄的这篇盘一盘Numpy的拙见。


这是上篇,文章图文并茂地讲透了:Numpy数组的视图,内存块存储,这两个最核心的概念以及它们的不同;同时,附上了清楚的、完美的示意图,真的是难能可贵,如下图所示,二维数组的视图,计算机中内存是如何存储它的。

可以看到,存储是按照严格的连续内存形式,只不过会增加一个stride为每个维度打标

640?wx_fmt=png


这两个概念及区别是深入理解Numpy的许多性质的重要理论基础。

基于此,还深入浅出地讲解了三维数组的转置,这可能是我见过的最深入浅出的讲解版本了。以下全部引用自王兄的这篇讲解,只用精美的四幅图,就把三维,代表高维数组转置的难点,讲透了。


数组转置的本质:交换每个轴 (axis) 的形状 (shape) 和跨度 (stride)。



四幅图解决问题:



原数组



640?wx_fmt=png



内存块的样子


640?wx_fmt=png




轴 0 和轴 1 互换



640?wx_fmt=png




转置结果



640?wx_fmt=png


5

怎么样,理解完这些,Numpy的本质,以及高维数组的转置等操作,是不是有了一种全新的理解,one-pass. 

深入浅出地讲解抽象的概念和操作,这一能力,太重要了!这才是真正名师才可能具备的能力和才华,最后再次感谢《王的机器》公众号作者:王圣元,新加坡国立大学毕业的大佬。



plus, 11点到家,打开电脑就码字,怕过了12点就发不出来了,所以像打了鸡血一样,难免出现错字,多见谅。

希望大家多多支持,点赞和转发,真正的好文是给我们带来知识和启发的。


640?wx_fmt=jpeg

280篇笔记

Python

算法

都有


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值