如下带你走进 @ 机器人时代
Discover 点击上面蓝色文字,关注我们
Python中相当重要的科学计算库非NumPy莫属。
无论是商务数据挖掘、科学计算、人工智能、图像识别等等所有涉及到数据处理的模块,绝大多数都建立在NumPy基础之上,因为相比其他工具而言,NumPy是一个比较单纯的数学工具包。
事实证明,NumPy不仅又好用又高效,而且功能还非常强大。既然大多数数据处理模块都调用NumPy处理数据,那么我们只要学好NumPy的基础,把我们的数据包装成为NumPy的数据结构,就会被大多数模块调用、处理,从而简化了数据交流、数据转换的问题。
学习NumPy能逐步建立起类似于维度、整体运算等等的思维方式,为学习使用Pandas打好基础。
前面我们已经了解过NumPy数组的创建以及数据类型,今天我们来看看NumPy的整体运算:
当我们需要处理一些表格数据的时候,很多初学编程的朋友会使用循环语句将数据取出来挨个进行运算,如果数据维度较多,可能需要更多的循环来进行处理。例如下面一些数据:
s=[[12,13,18,29],[33,45,67,39],[22,15,55,77]]
这是一个二维数组,如果需要将每一个数字都乘以10,以前我们会使用一个循环语句:
for i in s:\n for j in i:\n print(j*10)
根据计算结果,还需要重新把它组装成一个二维数组,看起来比较麻烦。
如果不是乘以10,而是需要和另外一个二维数组相乘,是不是更加复杂和麻烦呢?不仅如此,在程序运行的速度和性能上也大打折扣。
使用NumPy是如何解决这个问题的呢?我们来看看:
是不是超级简单?‘+-*/’的运算,就是一行代码搞定!
我们来看看NumPy的运算性能如何,使用list生成一个1000万的数组,range(1,10000000),然后我们把每一个数字都乘以10000,用循环的方式和NumPy数组运算的方式来比较:
是不是很令人惊讶?
那么NumPy支持什么样的运算方式呢?
abs求绝对值,sqrt计算平方根,exp计算指数,log计算自然对数,log2计算以2为底的对数,log10计算以10为底的对数,ceil大于等于该值的最小整数,floor小于等于该值的最小整数,sin\\cos\\tan正弦、余弦、正切函数、还有反三角函数:arcsin\\arccos\\arctan等等。
例如:x=np.abs(s),注意写法,要加上np.才可以。
如果需要对运算的结果进行四舍五入,只需要写上:np.round(x,2)即可。
如果是两个数组进行运算的情况,也是一样的效果:
点积运算:行看左边,列看右边的规则。
a=[[1,2,3],\n [4,5,6]]\nb=[[7,8],\n [9,10],\n [11,12]]\nnp.dot(a,b)\n结果:\narray([[ 58, 64],\n [139, 154]])
点积运算是什么算出来的呢?用左边数组的第一行与右边第一列的元素两两相乘,得到结果7、18、33,然后将他们相加得到58为结果中第一个元素;之后,再用左边第一行与右边第一列进行运算,结果相加得64,为结果第一行第2个元素,以此类推。
那么点积运算有什么用处呢?我们来看一组数据:
这是某公司产品销售数据表和奖励标准,如果我们要计算第一季度发放提成,就能得到下表:
显然,这就是一个点积运算,大家可以试试:
a=[[23,32],[18,28],[21,33]]\nb=[[312,335,321],[225,221,231]]\nnp.dot(a,b)\n输出结果:\narray([[14376, 14777, 14775],\n [11916, 12218, 12246],\n [13977, 14328, 14364]])
如果我们用循环来实现的话,就会非常麻烦。点积运算也可以写成这样:
a=np.array(a)\nb=np.array(b)\na.dot(b)\n结果:\narray([[14376, 14777, 14775],\n [11916, 12218, 12246],\n [13977, 14328, 14364]])
本来需要各种多重循环才能搞定的运算,一个整体运算就可以搞定,是不是很方便?
坚持学习,这样每天都能进步一点点!
往期回顾:
来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!RPA技术在旅行社销售业务中如何凤凰涅槃??【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!本文引用和摘录相关内容,请联系侵删。
- END -
最后,文章有帮助到你的话【点赞在看】激励我们分享更多的干货!
版权声明:CosMeDna所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系删除!
本文链接://www.cosmedna.com/article/583379848.html