《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介绍
    • 前言
    • 数学计算库NumPy介绍
      • 多维数组对象ndarray
      • 数组的访问
    • 结束语

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

前言

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

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

数学计算库NumPy介绍

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

$ pip install numpy

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

import numpy as np
import random
import time

多维数组对象ndarray

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

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

ary1 = np.array([1,2,3,4,5,6,7,8,9])

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

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)

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

0.9900028705596924 --- 0.13501548767089844

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

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

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

ary3 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

数组的访问

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

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

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

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

结束语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/270612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序合集更更更之echarts雷达图!

实现效果 写在最后🍒 更多相关内容,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云~

VMware17Pro虚拟机安装Linux CentOS 7.9(龙蜥)教程(超详细)

目录 1. 前言2. 下载所需文件3. 安装VMware3.1 安装3.2 启动并查看版本信息3.3 虚拟机默认位置配置 4. 安装Linux4.1 新建虚拟机4.2 安装操作系统4.2.1 选择 ISO 映像文件4.2.2 开启虚拟机4.2.3 选择语言4.2.4 软件选择4.2.5 禁用KDUMP4.2.6 安装位置配置4.2.7 网络和主机名配置…

OpenAI换血大震动始末:“ChatGPT之父”奥特曼,缘何被“扫地出门”?

近期,AI业界发生了一场“大地震”。作为聊天机器人ChatGPT的开发者,OpenAI无疑是最受关注的人工智能公司之一。就是这家公司的联合创始人、CEO、有“ChatGPT之父”之称的阿尔特曼在“疯狂的5天”里,经历了被闪电免职、加入微软、最终又官复原…

微服务架构<2>

在电商项目中,我们针对一些核心业务,比较复杂的业务需要做一些设计以及优化的过程首先我们针对于订单的模块拆分了2个子模块1.order-curr实时下单业务 2.order-his 做一些历史的订单归档我们的订单业务 >商品添加至购物车 >购物车结算--> 订单…

SpringBoot整合JWT+Spring Security+Redis实现登录拦截(二)权限认证

上篇博文中我们已经实现了登录拦截,接下来我们继续补充代码,实现权限的认证 一、RBAC权限模型 什么事RBAC权限模型? RBAC权限模型(Role-Based Access Control)即:基于角色的权限访问控制。在RBAC中&#x…

MySQL——进阶篇

二、进阶篇🚩 1. 存储引擎🍆 1.1 MSQL体系结构 连接层: 连接处理,连接认证,每个客户端的权限 服务层: 绝大部分核心功能,可跨存储引擎 可插拔存储引擎: 需要的时候可以添加或拔掉…

代码随想录算法训练营第二十七天|组合总和等

77 组合 1 描述 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 2 代码 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:path []rst…

新型智慧城市解决方案:PPT全文56页,附下载

关键词:智慧城市解决方案,智慧城市管理技术,智慧城市建设,数字城市建设 一、智慧城市宏观形势 1、政策支持:出台了一系列政策,鼓励和支持智慧城市的发展。这些政策为智慧城市的建设提供了政策保障和资金支…

网络安全法规和模型

基础 ISO信息安全:为数据处理系统建立和采取技术、管理的安全保护,保护计算机硬件、软件、数据不因偶然的或恶意的原因而受到破坏、更改、泄露 信息安全属性: CIA三元组:保密性、完整性、可用性 其他属性:真实性、不…

2023-12-25 事业-代号s-shein分析

前阵子SHEIN看的比较多,几乎把市面上的报告和趋势都研究了下,总结了这篇关于SHEIN的一切,从0开始全面的了解下SHEIN,比较通俗易懂,可以看看。 如果你还不了解SHEIN这家公司,想知道知道,可以翻看下,快速get这家公司的点如果你想了解下这家公司怎么发展和快速提升的,可以…

16路彩灯控制器 FPGA-Verilog

#16路彩灯控制器 FPGA-Verilog# 1、Verilog代码编写 1.1输入输出信号确定 题目要求多路彩灯控制器通过对应的开关按钮,能够控制多个彩灯的输出状态,组合多种变幻的灯光效果。 彩灯控制器的功能描述为: 设计一个多路彩灯控制器&#xff0…

Word-表格法对齐公式(手把手教学,公式格式从此不再愁)

新建word文件 1)鼠标点击【插入】—>【表格】,选择31列的表格 2)鼠标置于中间表格,快捷键输入Alt,进入公式编辑器中,输入任意字母,如:A,点击居中即可。 3)第三列表…

飞天使-k8s知识点7-kubernetes升级

文章目录 验证新版本有没有问题需要安装的版本微微 1.20.6.0kubeadm upgrade plan 验证新版本有没有问题 查看可用版本的包 现有的状态 查看版本 yum list kubeadm --showduplicates |grep 1.20 yum list kubelet --showduplicates |grep 1.20 yum list kubectl --showduplic…

代码随想录第四十天(一刷C语言)|单词拆分

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。 单词拆分 思路:参考carl文档 动规五部曲分析如下: 1、确定dp数组以及下标的含义:dp[i] : 字符串长度为i的话,dp[i]为true,表示可…

DG报错ORA-01111、ORA-01110、ORA-01111备库不同步

刚同步好没多久的dg备库,过两天查看同步状态发现备库数据不同步,重新开启同步也不能正常同步。 查看alert日志,查看报错如下: MRP0: Background Media Recovery terminated with error 1111 Errors in file D:\APP\ADMINISTRATOR…

【IDEA】try-catch自动生成中修改catch的内容

编辑器 --> 文件和代码模板 --> 代码 --> Catch Statement Body

用Disruptor框架实现生产者-消费者模式

ConcurrentLinkedQueue队列的秘诀就在于大量使用了无锁CAS操作。 现成的Disruptor框架实现CAS进行编程。 无锁的缓存框架:Disruptor 它使用无锁的方式实现了一个环形队列,非常适合实现生产者-消费者模式, 比如事件和消息的发布。如果队列是环…

【网络安全 | 网络协议】结合Wireshark讲解TCP三次握手

TCP三次握手在Wireshark数据包中是如何体现的?在此之前,先熟悉TCP三次握手的流程。 TCP三次握手流程 TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。在建立 TCP 连接时,需要进行三次握手,防止因为…

Python 直方图的绘制-`hist()`方法(Matplotlib篇-第7讲)

Python 直方图的绘制-hist()方法(Matplotlib篇-第7讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

【MySQL】脏读、不可重复读、幻读介绍及代码解释

🍎个人博客:个人主页 🏆个人专栏: 数 据 库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 数据库事务隔离级别是关系数据库管理系统中一个重要的概念,它涉及到多个事务并发执行…