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

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

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 字节

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

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

96 + len(a) * 8 字节

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

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

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

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

import timeimport numpy as npsize_of_vec = 1000def 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() - t1def numpy_version():t1 = time.time()X = np.arange(size_of_vec)Y = np.arange(size_of_vec)Z = X + Yreturn time.time() - t1t1 = pure_python_version()t2 = numpy_version()print(t1, t2)print("Numpy is in this example " + str(t1/t2) + " faster!")

登录后复制

结果如下:

0.00048732757568359375 0.0002491474151611328Numpy is in this example 1.955980861244019 faster!

登录后复制

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

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

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

import numpy as npfrom timeit import 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)def pure_python_version():Z = [X_list[i] + Y_list[i] for i in range(len(X_list)) ]def numpy_version():Z = X + Ytimer_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.00297531206160783770.00014940369874238968[0.002683573868125677, 0.002754641231149435, 0.002803879790008068][6.536301225423813e-05, 2.9387418180704117e-05, 2.9171351343393326e-05]

登录后复制

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

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

参考文献:​​https://www.php.cn/link/5cce25ff8c3ce169488fe6c6f1ad3c97​​

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

以上就是Python大数据为啥一定要用Numpy Array?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2238008.html

(0)
上一篇 2025年2月26日 19:13:08
下一篇 2025年2月26日 19:13:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何设置日志记录策略以满足需求

    构建完善的日志记录策略并非易事,需要周全考虑诸多因素,例如日志用途、数据量、存储空间以及安全性等等。 以下步骤和建议将帮助您创建高效的日志记录策略: 一、明确日志记录目标 首先,必须明确日志记录的最终目的: 问题排查: 记录系统或应用错误和…

    2025年3月28日
    100
  • JS日志分析工具有哪些推荐

    在javascript日志分析领域,有多款优秀的工具可以帮助开发者进行日志的记录、查看和分析。以下是一些推荐的js日志分析工具: Kotaemon: 特点:专为开发者和运维人员设计,通过直观的界面、灵活的过滤和强大的分析功能,帮助用户快速定…

    互联网 2025年3月28日
    100
  • Linux FTP服务器如何配置SSL加密

    本文将指导您如何在Linux系统上为FTP服务器配置SSL加密,以增强数据传输安全性。我们将使用vsftpd (Very Secure FTP Daemon) 作为示例。 第一步:安装vsftpd和获取SSL证书 首先,安装vsftpd: …

    2025年3月28日
    100
  • Linux strings输出格式能自定义吗

    strings 命令用于从二进制文件中提取可打印的字符串。默认情况下,strings 命令的输出格式是固定的,即每行显示一个字符串,前面带有其在文件中的字节偏移量。 虽然 strings 命令本身不提供直接的自定义输出格式选项,但你可以通过…

    互联网 2025年3月28日
    100
  • 成品网站python在线观看有哪些?

    本文推荐十个学习Python3的优质资源,涵盖国内外知名网站和平台。包括菜鸟教程、廖雪峰Python3教程、Python官方文档等内容详尽、权威可靠的学习资源,以及实验楼、Codecademy等注重实践和项目学习的平台,还有Python12…

    2025年3月28日
    100
  • Python数据库操作:必须使用ORM吗?

    Python数据库操作:ORM并非唯一选择 许多Python开发者习惯使用ORM(对象关系映射)工具,例如SQLAlchemy,来操作数据库。 但一个常见问题是:是否必须为每个数据库表都创建对应的ORM映射?尤其面对大量表时,这种方法显得冗…

    2025年3月28日
    100
  • mySQL下载完安装不了

    mysql安装失败的原因主要有:1. 权限问题,需以管理员身份运行或使用sudo命令;2. 依赖项缺失,需安装相关开发包;3. 端口冲突,需关闭占用3306端口的程序或修改配置文件;4. 安装包损坏,需重新下载并验证完整性;5. 环境变量配…

    2025年3月28日
    100
  • 币安Alpha是什么

    安币Alpha是币安平台上为专业交易者和投资者提供的工具和服务聚合平台。它的核心功能包括:1.策略广场,汇集不同交易策略;2.策略构建器,允许自定义交易策略;3.高级数据分析,提供市场分析工具;4.机构级服务,满足专业投资者的需求。 币安作…

    2025年3月28日
    100
  • python写火车票抢票软件下载

    可以下载 Python 火车票抢票软件来解决抢票难题,最常用的软件是 12306 抢票助手。下载步骤: 1. 访问 GitHub 项目。2. 下载 ZIP 文件。3. 解压文件。使用步骤: 1. 运行“run.py”。2. 输入账号密码。3…

    2025年3月14日
    200
  • 小红书水印怎么批量去掉

    小红书水印批量去除方法:使用在线工具(水印云、智图、Apowersoft)使用第三方软件(VideoProc、VSDC、FonePaw)使用脚本(需了解 Python 或 JavaScript) 小红书水印如何批量去除? 批量去除小红书水印…

    2025年3月14日
    200

发表回复

登录后才能评论