📋 博主简介
- 💖 作者简介:大家好,我是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()
执行代码,绘制的图形如图所示。
结束语
好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。