Python大数据为啥一定要用Numpy Array?

Python大数据为啥一定要用Numpy Array Numpy 是Python科学计算的一个核心模块。它提供了非常高效的数组对象,以及用于处理这些数组对象的工具。一个Numpy数组由许多值组成,所有值的类型是相同的。 Python的核心库提供了 List 列表。列表是最常见的Python数据类型之一,它可以调整大小并且包含不同类型的元素,非常方便。 那么List和Numpy Array到底有什么区别?为什么我们需要在大数据处理的时候使用Numpy Array?答案是性能。 Numpy数据结构在以下方面表现更好: 1.内存大小—Numpy数据结构占.. 阅读详情

Numpy 是Python科学计算的一个核心模块。它提供了非常高效的数组对象,以及用于处理这些数组对象的工具。一个Numpy数组由许多值组成,所有值的类型是相同的。

Python的核心库提供了 List 列表。列表是最常见的Python数据类型之一,它可以调整大小并且包含不同类型的元素,非常方便。

那么List和Numpy Array到底有什么区别?为什么我们需要在大数据处理的时候使用Numpy Array?答案是性能。

Numpy数据结构在以下方面表现更好:

1.内存大小—Numpy数据结构占用的内存更小。

2.性能—Numpy底层是用C语言实现的,比列表更快。

3.运算方法—内置优化了代数运算等方法。

下面分别讲解在大数据处理时,Numpy数组相对于List的优势。

1.内存占用更小

适当地使用Numpy数组替代List,你能让你的内存占用降低20倍。

对于Python原生的List列表,由于每次新增对象,都需要8个字节来引用新对象,新的对象本身占28个字节(以整数为例)。所以列表 list 的大小可以用以下公式计算:

64 + 8 * len(lst) + len(lst) * 28 字节

308be434b3587c6d75fc5f7e930da326.png

而使用Numpy,就能减少非常多的空间占用。比如长度为n的Numpy整形Array,它需要:

96 + len(a) * 8 字节

3a7660589e30944336d3bf9a5271b255.png

可见,数组越大,你节省的内存空间越多。假设你的数组有10亿个元素,那么这个内存占用大小的差距会是GB级别的。

2.速度更快、内置计算方法

运行下面这个脚本,同样是生成某个维度的两个数组并相加,你就能看到原生List和Numpy Array的性能差距。

import time
import numpy as np

size_of_vec = 1000

def pure_python_version():
    t1 = time.time()
    X = range(size_of_vec)
    Y = range(size_of_vec)
    Z = [X[i] + Y[i] for i in range(len(X)) ]
    return time.time() - t1

def numpy_version():
    t1 = time.time()
    X = np.arange(size_of_vec)
    Y = np.arange(size_of_vec)
    Z = X + Y
    return time.time() - t1


t1 = pure_python_version()
t2 = numpy_version()
print(t1, t2)
print("Numpy is in this example " + str(t1/t2) + " faster!")

结果如下:

0.00048732757568359375 0.0002491474151611328
Numpy is in this example 1.955980861244019 faster!


可以看到,Numpy比原生数组快1.95倍。

如果你细心的话,还能发现,Numpy array可以直接执行加法操作。而原生的数组是做不到这点的,这就是Numpy 运算方法的优势。

我们再做几次重复试验,以证明这个性能优势是持久性的。

import numpy as np
from timeit import Timer

size_of_vec = 1000
X_list = range(size_of_vec)
Y_list = range(size_of_vec)
X = np.arange(size_of_vec)
Y = np.arange(size_of_vec)

def pure_python_version():
    Z = [X_list[i] + Y_list[i] for i in range(len(X_list)) ]

def numpy_version():
    Z = X + Y

timer_obj1 = Timer("pure_python_version()", 
                   "from __main__ import pure_python_version")
timer_obj2 = Timer("numpy_version()", 
                   "from __main__ import numpy_version")

print(timer_obj1.timeit(10))
print(timer_obj2.timeit(10)) # Runs Faster!

print(timer_obj1.repeat(repeat=3, number=10))
print(timer_obj2.repeat(repeat=3, number=10)) # repeat to prove it!

结果如下:

0.0029753120616078377
0.00014940369874238968
[0.002683573868125677, 0.002754641231149435, 0.002803879790008068]
[6.536301225423813e-05, 2.9387418180704117e-05, 2.9171351343393326e-05]


可以看到,第二个输出的时间总是小得多,这就证明了这个性能优势是具有持久性的。

所以,如果你在做一些大数据研究,比如金融数据、股票数据的研究,使用Numpy能够节省你不少内存空间,并拥有更强大的性能。

参考文献:https://webcourses.ucf.edu/courses/1249560/pages/python-lists-vs-numpy-arrays-what-is-the-difference

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注我们。


 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看200个Python案例!

numpy的基本用法,适用于大气科学以及一些大数据处理的基本方法的总结 通过各方面资料的查阅,结合自己平时自己的应用经验,把网络上以及一些参考书上关于numpy的应用方法综合性地总结了一下。把一些零散的知识碎片整合化,同时舍弃了一些我觉得其他库能够做的更好的函数。为结合大气科学的pynio和pyngl这两个库打下基础。 立即下载

相关推荐

bert-ini:一种基于bert的实体对齐交互模型

本次分享一项来自IJCAI-20的实体对齐工作,该工作提出了一种不同于以往的采用图结构信息进行实体对齐的技术方案,该方案取得了当时的最好效果;不仅如此,模型本身的对齐效率在该项工作中也被考虑,实际工作中非常具备借鉴意义。

qq_33331424的博客 3152

为什么说Python大数据处理一定要用Numpy Array?

Numpy 是Python科学计算的一个核心模块。它提供了非常高效的数组对象,以及用于处理这些数组对象的工具。一个Numpy数组由许多值组成,所有值的类型是相同的。Python的核心库提供...

Python实用宝典网 883

【时间序列预测算法】——Holt-Winters算法介绍及代码实现

背景 一阶二阶三阶指数平滑方法拟合效果均较好,通过结合数据自然属性,数据自身、趋势变化、季节性,提出了这三个角度的衡量量,可以说,理解起来更自然、更亲切。 公式 一阶: sts_tst​是t时刻对xtx_txt​的估计值,这里只有一个参数α,是数据本身的平滑属性的体现。 二阶: 引入了时间趋势变量btb_tbt​,优化了一下一阶的公式。同时还可以预测t+m时刻的值: 三阶: 又引入了季节性周期描述变量ctc_tct​,优化了一下二阶的公式。同时还可以预测t+m时刻的值: NOTE:ct

BlackValley的博客 1万+

Python 中节约内存的方式

生成器 生成器,比较节省内存资源,它不用每次都把所有的数都返回,而是每次返回一个。 例如 def fobo(): a,b = 1,1 for i in range(5): yield a a,b = b,a+b obj=fobo() print(next(obj)) print(next(obj)) print(next(obj)) for i in fobo(): print(i) slots 魔法方法 Python 中每个类都实例属性,默认情况下p

浮云 1331

手把手教你学Simulink实例--使用 Simulink 进行电力电子系统的小信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。小信号模型仿真的目的是通过线性化非线性系统来评估其动态特性,包括增益、相位裕度、带宽等指标。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的小信号模型仿真。背景介绍。

MHD0815的博客 298

第一篇:APS智能排产理论核心与求解器选型指南

本文系统解析了APS(高级计划与排程)系统的核心功能与技术实现。APS作为融合生产计划与排程的智能决策系统,通过运筹优化算法实现全局最优,平衡交付与效率。重点探讨了混合整数线性规划(MILP)在APS中的应用,包括设备分配、生产批量和人员班次优化等场景,并分析了其局限性与其他算法(如启发式算法)的互补性。文章还提供了APS实施策略建议和优化建模技巧,强调从简单模型开始迭代验证的重要性。最后介绍了甘特图在APS中的多维可视化作用,包括计划调整和决策支持功能。全文为理解APS系统原理及实践应用提供了全面指导。

算法工程师 544

Python中既有列表,何必再有数组(NumPy‘s ndarray)?

从编写程序的方便性和运算性能两个角度解释numpy中ndarray存在的必要性。

行步至春深 924

硬件学习手册【总目录】

欢迎大家来到《硬件学习手册》,专栏主要包括 《硬件经验手册》《电子元器件器件手册》《PCB手册》《CPU手册》《元器件选型手册》五个分册。在开始专栏的更新前,博主先列出专栏的大纲,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。

fydar的博客 5854

真假美猴王-Numpy数据与Python数组的区别与联系

Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算。Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional array object)和ufunc(universal function object)。Ndarray(下文统一称为数组)是存储单一数据类型的多维数组(同C语言数组直...

CDA数据分析师 483

优秀的 Verilog/FPGA开源项目介绍(六)- MIPI

MIPI的协议我就不详细介绍了(可以查看<下面的二维码>),这里和开源方案比较接近的即使FPGA实现MIPI物理层(DPHY)中电气属性相关的几种方案:MIPI DPHY RX...

OpenFPGA的博客 4457

通过Langchain实现大模型完成测试用例生成的代码(可集成到各种测试平台)

代码中使用的是讯飞spark3.0版本,其中版本在的控制已经封装到了langchain对应的讯飞的iflytek的类中,可以在调用的时候显示控制,默认是spark2.0版本。

Criss@陈磊 2362

在Python中,什么是NumPy?如何使用?

NumPy是一个Python库,旨在有效地处理Python中的数组。它快速、简单易学且存储高效。它还改进了流程处理数据的方式。Numpy 用于生成 n 维数组。要使用 NumPy,我们只需将其导入我们的程序,然后我们可以轻松地在我们的代码中使用它的功能。NumPy是一个流行的Python软件包,用于科学计算和统计分析。它的数组是来自同一数据类型的值网格。它还具有用于处理线性代数、傅里叶变换和矩阵的函数。我们可以将许多算法转换为可以应用于数组的函数。NumPy具有超越其自身的应用程序。

很酷的站长的博客 5091

【WRF理论第十五期】WPS中输入geogrid二进制格式

WPS中输入geogrid二进制格式

WW、forever的博客 1079

Python大数据为啥一定要用Numpy Array(1),透彻分析源码

对于Python原生的List列表,由于每次新增对象,都需要8个字节来引用新对象,新的对象本身占28个字节(以整数为例)。它提供了非常高效的数组对象,以及用于处理这些数组对象的工具。一个Numpy数组由许多值组成,所有值的类型是相同的。列表是最常见的Python数据类型之一,它可以调整大小并且包含不同类型的元素,非常方便。运行下面这个脚本,同样是生成某个维度的两个数组并相加,你就能看到原生List和Numpy Array的性能差距。假设你的数组有10亿个元素,那么这个内存占用大小的差距会是GB级别的。

2301_76379606的博客 615

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python大数据为啥一定要用Numpy Array,2024年最新Pythonstudio基础

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。一个人可以走的很快,但一群人才能走的更远。

2401_84182073的博客 341

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python大数据为啥一定要用Numpy Array,靠着这份900多页的PDF面试整理

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

m0_60607675的博客 811

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2024年Python大数据为啥一定要用Numpy Array(4),跳槽面试大厂被拒

2.性能—Numpy底层是用C语言实现的,比列表更快。3.运算方法—内置优化了代数运算等方法。下面分别讲解在大数据处理时,Numpy数组相对于List的优势。

2301_76379606的博客 496

2024年最新Python大数据为啥一定要用Numpy Array,2024大数据开发者真的太难了

那么List和Numpy Array到底有什么区别?为什么我们需要在大数据处理的时候使用Numpy Array?答案是性能。Numpy数据结构在以下方面表现更好:1.内存大小—Numpy数据结构占用的内存更小。2.性能—Numpy底层是用C语言实现的,比列表更快。3.运算方法—内置优化了代数运算等方法。下面分别讲解在大数据处理时,Numpy数组相对于List的优势。

2401_84592111的博客 331

2024年Python大数据为啥一定要用Numpy Array(5),学习路线+知识点梳理

如果你细心的话,还能发现,Numpy array可以直接执行加法操作。而原生的数组是做不到这点的,这就是Numpy 运算方法的优势。可以看到,第二个输出的时间总是小得多,这就证明了这个性能优势是具有持久性的。我们再做几次重复试验,以证明这个性能优势是持久性的。可以看到,Numpy比原生数组快1.95倍。

2301_82243558的博客 1065

2024年最全Python大数据为啥一定要用Numpy Array,2024年最新大数据开发高级工程师必看系列

如果你细心的话,还能发现,Numpy array可以直接执行加法操作。而原生的数组是做不到这点的,这就是Numpy 运算方法的优势。运行下面这个脚本,同样是生成某个维度的两个数组并相加,你就能看到原生List和Numpy Array的性能差距。我们再做几次重复试验,以证明这个性能优势是持久性的。可以看到,Numpy比原生数组快1.95倍。

jarckv的博客 1057

2024年大数据最全Python大数据为啥一定要用Numpy Array(1),2024年最新一个APP从启动到主页面显示经历了哪些过程

如果你细心的话,还能发现,Numpy array可以直接执行加法操作。而原生的数组是做不到这点的,这就是Numpy 运算方法的优势。我们再做几次重复试验,以证明这个性能优势是持久性的。可以看到,Numpy比原生数组快1.95倍。

2401_84573250的博客 631

python的list与array的区别

1) list python的list容器可以存放任意类型的对象,实际上保存的是该对象的指针。 举例:a = [1,2,3] 那么list a中保存了3个int型的指针,并且这些指针指向了对应的元素。 因此,若在大数据的场景下使用list来进行数值运算,则会造成内存资源的浪费以及造成处理时间上的浪费。 2)array python中有array模块,该模块支持一维数组,并在数组中只能存放同种类型的对象,这样就避免了list带来的问题。至于更多维数的数组,则可以使用numpy模块进行操作。

qq_36610334的博客 358

财务大数据比赛有python吗-Python大数据与机器学习之NumPy初体验

本文是Python大数据与机器学习系列文章中的第6篇,将介绍学习Python大数据与机器学习所必须的NumPy库。通过本文系列文章您将能够学到的知识如下:应用Python进行大数据与机器学习应用Spark进行大数据分析实现机器学习算法学习使用NumPy库处理数值数据学习使用Pandas库进行数据分析学习使用Matplotlib库进行Python绘图学习使用Seaborn库进行统计绘图使用Plotl...

weixin_37988176的博客 293
上一篇: 去谷歌面试,竟让扔鸡蛋?
下一篇: 30段极简Python代码,30秒学一个实用技巧!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值