Python第三方扩展库NumPy
NumPy(Numerical Python,注意使用时全部小写 numpy) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
在Windows平台上安装numpy,可在cmd命令行中,输入如下命令
pip3 install numpy
回车,默认情况使用国外线路较慢,我们可以使用国内的镜像网站:
豆瓣:https://pypi.doubanio.com/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple
例如使用清华的镜像
pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
电脑上安装了多个Python版本,你可以为特定版本的Python安装模块(库、包)。例如我的电脑中安装了多个Python版本,要在Python 3.10版本中安装,并使用清华的镜像,cmd命令行中,输入如下命令
py -3.10 -m pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
回车即可。
【关于安装安装第三方库的更多情况,可参见:https://blog.csdn.net/cnds123/article/details/104393385 】
官方文档https://numpy.org/doc/stable/
NumPy 中文文档https://numpy123.com/
NumPy是许多其他科学计算库的基础,如:
- Pandas:提供高级数据结构和数据分析工具。
- SciPy:用于科学和技术计算的库,提供了许多数值计算的功能。
- Matplotlib:用于创建2D图表和图形的库。
- Scikit-learn:用于机器学习的库。
- TensorFlow和PyTorch:用于深度学习的库。
【顺便提示:NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
NumPy:提供对多维数组的支持,以及高效的数组操作和数学函数。它是许多其他数据分析和科学计算包的基础。NumPy 官网 http://www.numpy.org/
SciPy:在 NumPy 的基础上构建,提供了一套用于科学和工程应用的数学算法。它包括模块用于优化、线性代数、积分、插值、特殊函数、快速傅立叶变换、信号和图像处理等。SciPy 官网:https://www.scipy.org/
Matplotlib:是一个绘图库,提供了大量的绘图函数用于创建静态、动态、交互式的图形和数据可视化,可以帮助用户创建各种类型的图形,包括折线图、散点图、柱状图、饼图等。顺便提示一种情况,使用matplotlib安装成功,但使用时提示:…… ImportError: DLL load failed while importing _cext: 拒绝访问。出现这个错误有可能遇到了权限问题。你可以尝试以管理员身份启动你的Python。
Matplotlib 官网:https://matplotlib.org/
Matplotlib中文网 https://www.matplotlib.net
NumPy、SciPy 和 Matplotlib 都是开源项目,这意味着它们是免费的,而且社区支持强大。
Matplotlib 通常与 NumPy 和 SciPy 一起使用,因为它们通常是科学计算和数据可视化的一部分。有时,单独安装 matplotlib 可能会因为缺少依赖项而导致问题。同时安装这些库可以确保它们之间的兼容性,并且可以避免一些潜在的依赖冲突。下面是一个基本的命令行示例,用于同时安装这三个库:
pip install numpy scipy matplotlib】
NumPy基本用法(注意使用时全部小写numpy):
import numpy as np
# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4, 5])
# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 使用arange函数创建一个数组
arr3 = np.arange(10)
# 对数组进行基本的数学运算
arr4 = arr2 + 2
arr5 = arr2 * 3
# 计算数组的平均值
mean_value = np.mean(arr1)
mean_value2 = np.mean(arr2)
# 创建一个线性序列数组,从0开始,到10结束,步长为2
arr6 = np.arange(0, 10, 2)
运行参见下图:
顺便提示:NumPy 提供了一个名为 ndarray 的强大数组对象,它可以表示任意维度的数组。对于矩阵操作,我们通常使用二维的 ndarray,它可以被视为行和列的集合。 NumPy 也提供了一个名为 matrix 的专门的矩阵类,但它并不推荐使用,已经宣布在未来的版本中可能会弃用 matrix 类因为 matrix 类仅限于二维且可能在未来的版本中被弃用。相反,NumPy 鼓励使用常规的 ndarray 对象,因为它们更通用且功能更强大。
下面是一个使用numpy库和Python自带的标准库来模拟掷骰子游戏的示例。
在这个例子中,我们将模拟掷两个六面骰子10000次,并计算两个骰子之和的分布情况。源码如下:
import numpy as np
# 设置随机种子以获得可重复的结果
np.random.seed(0)
# 模拟掷骰子
num_rolls = 10000
dice1 = np.random.randint(1, 7, size=num_rolls) # 生成第一个骰子的结果
dice2 = np.random.randint(1, 7, size=num_rolls) # 生成第二个骰子的结果
sum_of_dice = dice1 + dice2 # 计算两个骰子之和
# 计算和的分布情况
sums, counts = np.unique(sum_of_dice, return_counts=True)
# 打印结果
for sum_, count in zip(sums, counts):
print(f"Sum of {sum_}: {count} times")
运行效果:
这个示例展示了numpy的几个关键功能:
np.random.randint: 生成一定范围内的随机整数。
np.random.seed: 设置随机种子以确保每次运行代码时获得相同的随机数序列。
np.unique: 找出数组中所有不同的值,并返回这些不同值及其在原数组中出现的次数。
这个简单的模拟可以帮助我们理解随机事件的概率分布。