Python第三方扩展库NumPy

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)

运行参见下图:

Python第三方扩展库NumPy_第1张图片

顺便提示: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")

运行效果:

Python第三方扩展库NumPy_第2张图片

这个示例展示了numpy的几个关键功能:

np.random.randint: 生成一定范围内的随机整数。

np.random.seed: 设置随机种子以确保每次运行代码时获得相同的随机数序列。

np.unique: 找出数组中所有不同的值,并返回这些不同值及其在原数组中出现的次数。

这个简单的模拟可以帮助我们理解随机事件的概率分布。

你可能感兴趣的:(Python学习,编程资料,python,numpy)