《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]

结束语

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

相关推荐
老蒋新思维41 分钟前
创客匠人峰会新视角:AI 时代知识变现的 “组织化转型”—— 从个人 IP 到 “AI+IP” 组织的增长革命
大数据·人工智能·网络协议·tcp/ip·创始人ip·创客匠人·知识变现
TMO Group 探谋网络科技1 小时前
AI Agent工作原理:如何连接数据、决策与行动,助力企业数字化转型?
大数据·人工智能·ai
Ada大侦探1 小时前
新手小白学习Power BI第五弹--------产品分析以及产品毛利率报表、条件式标红、饼图、散点图
学习·数据分析·powerbi
Chasing Aurora2 小时前
Git 工程指引(命令+问题)
大数据·git·elasticsearch·团队开发·互联网大厂
TG:@yunlaoda360 云老大2 小时前
阿里云国际站代理商RPA跨境服务的适用场景有哪些?
大数据·阿里云·rpa
IT·小灰灰3 小时前
AI学会理解物理法则:OpenAI Sora 2如何重塑视频生成新范式
人工智能·python·深度学习·机器学习·数据挖掘·音视频
微盛企微增长小知识3 小时前
2025企业微信服务商测评:头部服务商微盛AI·企微管家技术实力与落地效果解析
大数据·人工智能·企业微信
TMO Group 探谋网络科技3 小时前
AI电商的应用:Magento 使用 Adobe 生成式 AI改造7大业务场景
大数据·人工智能·adobe·ai
UI设计兰亭妙微3 小时前
理性数据,温柔体验:北京兰亭妙微解码 Hydra Corps. 企业管理界面的 “松弛感设计”
大数据·人工智能·用户体验设计
慎独4133 小时前
家家有:从单向支出到价值循环,绿色积分如何 重构商业逻辑?
大数据·人工智能