《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

📋 博主简介

  • 💖 作者简介:大家好,我是wux_labs。😜
    热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
    通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
    通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
    对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。
  • 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
  • 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
  • 🎉 请支持我:欢迎大家 点赞👍+收藏⭐️+吐槽📝,您的支持是我持续创作的动力~🔥

《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

前言

大家好!今天为大家分享的是《PySpark大数据分析实战》第3章第2节的内容:NumPy介绍ndarray介绍。

图书在:当当京东机械工业出版社以及各大书店有售!

数学计算库NumPy介绍

NumPy(Numerical Python)是Python中科学计算的基础包,是用于科学计算和数值分析的一个重要库。它提供了多维数组对象(ndarray),各种派生对象,以及用于数组快速操作的通用函数、线性代数、傅里叶变换、随机数生成等功能,是Python科学计算中必不可少的库。要在项目中使用NumPy,需要在Python环境中安装NumPy,命令如下:

bash 复制代码
$ pip install numpy

在使用时需要在Python脚本中导入numpy,以及其他必要的包,代码如下:

python 复制代码
import numpy as np
import random
import time

多维数组对象ndarray

NumPy包的核心是ndarray对象,它封装了Python原生的相同数据类型的N维数组。ndarray是NumPy中用于存储和处理数据的核心数据结构,支持向量化计算和广播等操作。为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。

创建一个ndarray对象就和创建Python本地list对象一样简单,在NumPy中创建一维数组可以使用numpy.array()函数,这个函数可以接受一个集合对象,如列表或元组,将其转换为一维数组。下面的案例中创建了一个一维数组,代码如下:

python 复制代码
ary1 = np.array([1,2,3,4,5,6,7,8,9])

NumPy专门针对ndarray的操作和运算进行了设计,数组的存储效率和输入输出性能远优于Python中的集合,数组越大,NumPy的优势就越明显。下面的案例中,创建了一个包含1亿个随机数的集合,分别用本地集合对象和ndarray对象对元素求和,比较两种方式的耗时,代码如下:

python 复制代码
lst1 = []
for i in range(100000000):
    lst1.append(random.random())

# 使用Python原生list进行运算
t1 = time.time()
sum1 = sum(lst1)
t2 = time.time()

# 使用ndarray进行运算
ary2 = np.array(lst1)
t3 = time.time()
sum2 = np.sum(ary2)
t4 = time.time()

# 考察两种方式的处理时间
print(t2 - t1, '---', t4 - t3)

执行代码,输出结果如下:

text 复制代码
0.9900028705596924 --- 0.13501548767089844

可以看到,ndarray的计算速度快很多。相对于Python中的集合,ndarray有一些优势:

  • ndarray存储的是相同类型的数据,在内存中是连续存储的。
  • ndarray支持并行化运算。
  • NumPy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于Python代码。

在NumPy中创建一个N维数组也是使用numpy.array()函数,在下面的案例中创建了一个二维数组,代码如下:

python 复制代码
ary3 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

数组的访问

ndarray对象的元素可以通过索引、切片、迭代等方式进行访问和修改,这和Python本地集合的访问方式类似。在下面的案例中,分别通过索引、切片等方式访问元素,代码如下:

python 复制代码
print("通过索引获取元素:", ary1[2])
print("通过切片获取元素:", ary1[2:7])
print("对元素进行迭代:", [x * 2 for x in ary1])

执行代码,输出结果如下:

text 复制代码
通过索引获取元素: 3
通过切片获取元素: [3 4 5 6 7]
对元素进行迭代: [2, 4, 6, 8, 10, 12, 14, 16, 18]

结束语

好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。

相关推荐
Leo.yuan17 分钟前
数据量大Excel卡顿严重?选对报表工具提高10倍效率
数据库·数据分析·数据可视化·powerbi
SafePloy安策38 分钟前
ES信息防泄漏:策略与实践
大数据·elasticsearch·开源
学术搬运工44 分钟前
【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)
大数据·图像处理·人工智能·科技·机器学习·自然语言处理
Matrix702 小时前
HBase理论_背景特点及数据单元及与Hive对比
大数据·数据库·hbase
B站计算机毕业设计超人3 小时前
计算机毕业设计Python+大模型农产品价格预测 ARIMA自回归模型 农产品可视化 农产品爬虫 机器学习 深度学习 大数据毕业设计 Django Flask
大数据·爬虫·python·深度学习·机器学习·课程设计·数据可视化
Carl_奕然4 小时前
【大数据算法】MapReduce算法概述之:MapReduce基础模型
大数据·算法·mapreduce
Elastic 中国社区官方博客4 小时前
Elasticsearch 8.16:适用于生产的混合对话搜索和创新的向量数据量化,其性能优于乘积量化 (PQ)
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
飞翔的佩奇4 小时前
ElasticSearch:使用dsl语句同时查询出最近2小时、最近1天、最近7天、最近30天的数量
大数据·elasticsearch·搜索引擎·dsl
2301_769006785 小时前
19名专家被通报批评!国家科技重大专项评审违规!
大数据·人工智能·科技·sci·期刊·ssci
海边散步的蜗牛5 小时前
学术论文写作丨机器学习与深度学习
人工智能·深度学习·机器学习·chatgpt·数据分析·ai写作