梁山专做网站的公司,江苏水利工程建设局网站,注册公司流程和资料,门户网站需求#x1f4cb; 博主简介 #x1f496; 作者简介#xff1a;大家好#xff0c;我是wux_labs。#x1f61c; 热衷于各种主流技术#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员#xff08;PCTA#xff09;、TiDB数据库专家#xff08;PCTP… 博主简介 作者简介大家好我是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介绍
NumPyNumerical 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]结束语
好了感谢大家的关注今天就分享到这里了更多详细内容请阅读原书或持续关注专栏。