《PySpark大数据分析实战》-20.NumPy介绍数组的生成

📋 博主简介

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

《PySpark大数据分析实战》-20.NumPy介绍数组的生成

《PySpark大数据分析实战》-20.NumPy介绍数组的生成

前言

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

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

数学计算库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

数组的生成

NumPy提供了一些用于生成包含初始值的N维数组的方法,可以方便人们快速地生成N维数组。

生成有初始占位符内容的数组

NumPy可以生成初始占位符内容为0、1或随机数的数组,主要的方法有:

  • numpy.zeros(),用于生成元素全为0的数组。
  • numpy.ones(),用于生成元素全为1的数组。
  • numpy.empty(),用于生成元素为随机数的数组。

在下面的案例中分别生成包含不同初始值的二维数组,代码如下:

python 复制代码
# 生成全为0的数组
ary3 = np.zeros(shape=(2, 3), dtype="int32")
# 生成全为1的数组
ary4 = np.ones(shape=(2, 3), dtype=np.int32)
# 生成随机数数组
ary5 = np.empty(shape=(2, 3), dtype=np.float64)
print(ary3)
print(ary4)
print(ary5)

执行代码,输出结果为:

text 复制代码
[[0 0 0]
 [0 0 0]]
[[1 1 1]
 [1 1 1]]
[[6.23042070e-307 3.56043053e-307 1.37961641e-306]
 [2.22518251e-306 1.33511969e-306 1.24610383e-306]]
生成固定范围的数组

在生成数组时,可以指定数组中元素的数据范围,主要的方法有:

  • numpy.arange(),生成一个可指定起始值(默认为0)、终止值(不包含)、步长的数组。
  • numpy.linspace(),生成一个可指定起始值、终止值、样本数的一维等差数列数组。
  • numpy.logspace(),生成一个可指定起始值、终止值、样本数的一维对数数列数组。

在下面的案例中,分别生成包含不同数据范围的数组,代码如下:

python 复制代码
# 生成起始值1、终止值100、步长10的数组
ary6 = np.arange(1, 100, 10)
# 生成起始值1、终止值100、样本数10个的数组
ary7 = np.linspace(1, 100, 10)
# 生成起始值1、终止值2、以10为对数底数、样本数9个的数组
ary8 = np.logspace(1.0, 2.0, num=9)
print(ary6)
print(ary7)
print(ary8)

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

text 复制代码
[ 1 11 21 31 41 51 61 71 81 91]
[  1.  12.  23.  34.  45.  56.  67.  78.  89. 100.]
[ 10.          13.33521432  17.7827941   23.71373706  31.6227766
  42.16965034  56.23413252  74.98942093 100.        ]
生成服从分布律的数组

NumPy还可以生成服从一定分布律规则的数组,主要的方法有:

  • numpy.random.rand(),生成一个元素服从均匀分布的数组,可以指定每个维度的元素个数。
  • numpy.random.uniform(),从一个均为分布中随机抽样。
  • numpy.random.randn(),生成一个元素服从正太分布的数组,可以指定每个维度的元素个数。
  • numpy.random.normal(),从一个正太分布中随机抽样。

在下面的案例中,分布生成满足不同分布律的数组,代码如下:

python 复制代码
import matplotlib.pyplot as plt

figure, ax = plt.subplots(2, 2)
plt.rcParams['font.sans-serif'] = ['Simhei']
plt.subplot(2, 2, 1)
# 生成3000个元素的[0.1)区间的均匀分布数组
plt.hist(np.random.rand(3000))
ax[0][0].set_title('[0,1)均匀分布数组')

plt.subplot(2, 2, 2)
# 从[1,40)区间的均匀分布中随机抽样3000个元素
plt.hist(np.random.uniform(low=1, high=40, size=3000))
ax[0][1].set_title('[1,40)均匀分布中随机抽样')

plt.subplot(2, 2, 3)
# 生成均值为10,标准差为2,服从正太分布的数组
plt.hist(np.random.normal(10, 2, 3000))
ax[1][0].set_title('均值10,标准差2的正太分布数组')

plt.subplot(2, 2, 4)
# 生成服从标准正太分布的数组
plt.hist(np.random.randn(3000))
ax[1][1].set_title('标准正太分布数组')

plt.tight_layout()
plt.show()

执行代码,绘制的图形如图所示。

结束语

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

相关推荐
dreadp2 小时前
解锁豆瓣高清海报(二) 使用 OpenCV 拼接和压缩
图像处理·python·opencv·计算机视觉·数据分析
struggle20256 小时前
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
人工智能·深度学习·目标检测·语言模型·自然语言处理·数据挖掘·集成学习
AIGC大时代8 小时前
对比DeepSeek、ChatGPT和Kimi的学术写作关键词提取能力
论文阅读·人工智能·chatgpt·数据分析·prompt
Elastic 中国社区官方博客8 小时前
使用真实 Elasticsearch 进行高级集成测试
大数据·数据库·elasticsearch·搜索引擎·全文检索·jenkins·集成测试
好记性+烂笔头8 小时前
4 Spark Streaming
大数据·ajax·spark
好记性+烂笔头12 小时前
3 Flink 运行架构
大数据·架构·flink
字节侠12 小时前
Flink2支持提交StreamGraph到Flink集群
大数据·flink·streamgraph·flink2·jobgraph
东方佑13 小时前
OpenAI承认开源策略错误,考虑调整策略并推出o3-mini模型
开发语言·数据分析
kaiyuanheshang15 小时前
数据挖掘常用算法
人工智能·算法·数据挖掘
好记性+烂笔头16 小时前
4 Hadoop 面试真题
大数据·hadoop·面试