2020-12-06
阅读量:
746
Python numpy 中拉伸的巧用,那些你不能用广播去实现的梦想。
题目:任意二维数组的每一列减去两列的平均值
此时,当我们创建一个二维数组的时候,我们去计算列方向的平均值并不是难题,难的是,你怎么让你的二维数组去减去一个一维数组。
此时,有人会想了,用广播啊,但是python用血一样的提醒告诉你,它做不到啊。那么此时应该怎么去实现这个看似不能完成,但是看起来又很简单的梦想呢?
从这个图看看看我们梦开始的地方和被结果劝退的地方。使用广播的时候任何维度不一致,且都不为1的,不可以用广播,广播做法在此劝退你。
但是不要轻易放弃,来分析下两组数据的特征,一个10*2的二维数组,一个1*10的一维数组,我们如何能让谁去妥协下,去进行简单的四则运算呢。显而易见,对均值这个数组的加工是我们努力的方向。
此时,你可否想起了数组扩充?通过将数组转化为列表,并利用列表乘法使列表内元素加倍的特性,我们将数据变成了2*10
那么,最后一步就是.T,将2*10变成你梦寐以求的10*2 吧。
最后就是简单的数组件的四则运算,利用数组之间的运算都是元素级别的,完成人生梦想。






评论(0)


暂无数据
推荐帖子
0条评论
1条评论
0条评论