当前位置: 首页 > 后端技术 > Python

为什么说Python大数据处理一定要用NumpyArray呢?

时间:2023-03-26 18:50:38 Python

Numpy是Python科学计算的核心模块。它提供了非常有效的数组对象,以及用于处理这些数组对象的工具。Numpy数组由许多值组成,所有值都是同一类型。Python的核心库提供了List列表。列表是最常见的Python数据类型之一,可以调整大小并包含不同类型的元素,非常方便。那么List和NumpyArray到底有什么区别呢?为什么在大数据处理中需要用到NumpyArray?答案是性能。Numpy数据结构在以下方面表现更好:1.内存大小——Numpy数据结构占用的内存更少。2、性能——Numpy底层是用C语言实现的,比lists快。3.计算方法——内置优化的代数运算等方法。下面解释一下Numpy数组在大数据处理中相对于List的优势。1.更小的内存占用通过正确使用Numpy数组而不是List,你可以将你的内存占用减少20倍。对于Python原生的List列表,由于每增加一个对象,需要8个字节来引用新对象,而新对象本身占用28个字节(以整数为例)。所以list列表的大小可以通过以下公式计算:64+8len(lst)+len(lst)28字节,使用Numpy可以减少很多空间占用。比如一个长度为n的Numpy整型Array需要:96+len(a)*8个字节可见,数组越大越节省内存空间。假设您的数组有10亿个元素,那么内存占用量的差异将在GB级别。2.更快的速度和内置的计算方法运行下面的脚本,同样生成两个一定维度的数组,并将它们相加,可以看出原生List和NumpyArray的性能差距。导入timeimportnumpy作为npsize_of_vec=1000defpure_python_version():t1=time.time()X=range(size_of_vec)Y=range(size_of_vec)Z=[X[i]+Y[i]foriinrange(len(X))]returntime.time()-t1defnumpy_version():t1=time.time()X=np.arange(size_of_vec)Y=np.arange(size_of_vec)Z=X+Y返回时间.time()-t1t1=pure_python_version()t2=numpy_version()print(t1,t2)print("Numpyisinthisexample"+str(t1/t2)+"faster!")结果如下:0.000487327575683593750.0002491474151611328Numpyis1thisexample4805152快点!如您所见,Numpy比原生数组快1.95倍。如果细心,你还可以发现Numpy数组可以直接进行加法运算。原生数组做不到这一点,这是Numpy运算方式的优势。我们又重复了几次实验,以证明这种性能优势是持久的。importnumpyasnpfromtimeit导入Timersize_of_vec=1000X_list=range(size_of_vec)Y_list=range(size_of_vec)X=np.arange(size_of_vec)Y=np.arange(size_of_vec)defpure_python_version():Z=[X_list[i]+[i]foriinrange(len(X_list))]defnumpy_version():Z=X+Ytimer_obj1=Timer("pure_python_version()","from__main__importpure_python_version")timer_obj2=Timer("numpy_version()","from__main__importnumpy_version")print(timer_obj1.timeit(10))print(timer_obj2.timeit(10))#运行得更快!print(timer_obj1.repeat(repeat=3,number=10))print(timer_obj2.repeat(repeat=3,number=10))?#repeattoproveit!结果如下:0.00297531206160783770.00014940369874238968[0.002683573868125677,?0.002754641231149435,?0.002803879790008068][6.536301225423813e-05,?2.9387418180704117e-05,?2.9171351343393326e-05]可以看到,第二The每个输出的时间总是小得多,这证明这种性能优势是持久的。因此,如果你正在做一些大数据研究,比如金融数据和股票数据研究,使用Numpy可以为你节省大量的内存空间,而且性能更强大。这是我们文章的结尾。如果喜欢今天的Python实战教程,可以关注公众号:Python编程学习圈,了解更多编程技术知识!