首页 > 其他 > 详细

数据可视化基础专题(二十二):numpy80题(一)NumPy简介

时间:2021-05-04 10:08:59      阅读:28      评论:0      收藏:0      [点我收藏+]

来源:https://mp.weixin.qq.com/s?__biz=Mzg5OTU3NjczMQ==&mid=2247510077&idx=1&sn=eb420503447fefc141542700d40edb8b&source=41#wechat_redirect

什么是NumPy

从官方文档来看NumPy是Python的一个用于科学计算的基础包。它提供了多维数组对象和一个用于数组快速运算的混合的程序,包括数学,逻辑,排序、线性代数等操作。说人话就是它能比标准Python序列更快的进行计算??

为什么要用NumPy

经常有人拿List和NumPy比,为什么使用NumPy而不是List?List也可以存储数据啊,答案是NumPy处理数据比list要快很多,如果使用List是坐普通列车,那么NumPy就是坐高铁(?)?坐火箭(?)。那么下一个问题就来了,为什么NumPy会这么快?因为NumPy使用的是固定类型,想象一下我们有这样一个3*4矩阵

技术分享图片

 

 现在我们来通过放大这个5来比较NumPy与List的不同,大家都知道在计算机中都是利用二进制来存储数据,所这个5在计算机中是由8个二进制位组成的字节??

技术分享图片

 

 而在我们使用NumPy时候,这个5会被转换为包含4个字节的int32类型??技术分享图片

 

 但是在Numpy中你可以说这32位太长,然后指定为16位甚至8位都行

技术分享图片

 

 现在来看看List,在Python中一个list存储了值,类型等四个对象??

技术分享图片

 

 而我们的计算机会将这四个信息值都转换为二进制再进行读写??

技术分享图片

 

 感受到了吗,所以为啥NumPy比List快,因为它使用的内存字节更少所以我们的计算机可以更快速的读取。

并且更为重要的一点是,在我们遍历Numpy对象的每一个元素的时候,我们不需要每次都进行类型检查,原因还是NumPy使用的是固定类型。而在list中,我们可能会有整数、浮点数、字符串等,所以每一次使用都需要检查每个元素的类型。

当然Numpy比list快的另一个原因是Numpy使用的是连续内存分配。想象一下这就是我们的计算机内存,我们可以将信息存储在这些内存中的任何一个中??

技术分享图片

 

 假如我们有8个内存块存储信息,因为Python列表中的元素类型是任意的,并且可以像图中一样混乱排列,所以List实际上是用指针指向不同的地址,只能通过寻址方式找到下一个元素。而NumPy中的所有元素的类型都是相同的,所以NumPy在存储元素时内存可以连续??

技术分享图片

 

 而这样做可以更快的进行计算并且也可以有效的利用缓存。

最后,List能做的事比如插入、增加、删除数据NumPy都可以搞定,List不能做的事,NumPy也能搞定,比如我有两个list

a = [1,2,3] 

b = [4,5,6]

如果我直接计算a*b,那么list并不会给出我们想要的[1*4,2*5,3*6],而是直接报错,但是NumPy就可以轻松搞定??

a = np.array([1,2,3])

b = np.array([4,5,6])

a * b = array([ 4, 10, 18])

 

数据可视化基础专题(二十二):numpy80题(一)NumPy简介

原文:https://www.cnblogs.com/qiu-hua/p/14728895.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!