Python 与 NumPy 教程:NumPy 数组简介

言鼎科技 2023-06-09 387

介绍

最近,我们的 Python 团队参加了一个研讨会,技术爱好者们讨论了 Python 以及用于数据分析、机器学习和数据科学的一流 Python 库。NumPy 是讨论最多的 Python 库之一。它用于处理复杂的数学运算、数据分析和机器学习。研讨会涵盖了NumPy在python编程等各个领域的应用。

在今天的 Python 与 NumPy 教程中,我们将了解 NumPy 并查看它所促进的方法的一些实际应用。你们中的一些人可能不熟悉 NumPy 以及如何使用它。我们是来帮你的。看完我们的教程,你的疑惑就会迎刃而解。

什么是 NumPy?

NumPy是一个开源的 Python 项目,用于在 Python 中实现复杂的数值计算。它创建于 2005 年,包括用于处理属于矩阵、傅立叶变换和线性代数等领域的任务的函数。

NumPy 简单地意味着 Numerical Python。作为一个开源项目,NumPy 库的全部源代码都可以在github上找到。

为什么要使用 NumPy?

Python 由服务于数组目的的列表组成。但是,列表的处理速度较慢。NumPy 专注于提供比默认 Python 列表快近 50 倍的数组对象。NumPy 提供了一个名为数组. NumPy 提供的支持函数使得使用 ndarray 优于传统的 Python 列表。由于对速度和资源要求的重要性,数组不断地用于数据科学和机器学习等领域。

NumPy 的优点

与传统的 Python 列表相比,使用 NumPy 和数组的主要好处是:

  • 更快的速度:在后台,NumPy 使用用基本 C 语言编写的算法,使它们的执行在纳秒而不是秒内完成。

  • 减少对循环的依赖: NumPy 有助于改变对循环的依赖,防止程序员在迭代索引的嵌套中陷入混乱。

  • 更好的质量:作为一个开源项目,NumPy 有成千上万的贡献者致力于使 NumPy 无错误、更快、更友好。

  • 更简洁的代码:在处理复杂的数学/数学或数值运算时,没有循环的代码看起来就像您要计算的方程式。

Python 与 NumPy:先决条件和技术栈

我们假设您事先了解以下内容。

  • Python3编程

  • 虚拟环境

  • 康达/点

  • Google Colaboratory/Visual Studio 代码编辑器

要开始使用本教程,请确保您具备以下条件。

  • Python

  • IDE(Google Colaboratory 或 Visual Studio Code)

我们将使用以下技术。

  • NumPy

  • Google Colaboratory/Visual Studio Code

让我们开始探索 NumPy 的各种用例应用程序。这是我的系统设置:

  • Ubuntu 20.04 操作系统

  • Python 3.8+

安装 NumPy 使用

使用 pip 安装 numpy 包(建议在虚拟环境中这样做以避免污染您的操作系统)。

Python 与 NumPy 教程:NumPy 数组简介
pip 安装 numpy

创建新目录

创建一个新目录并使用以下命令导航到它。

Python 与 NumPy 教程:NumPy 数组简介
mkdir mynumpyprojectcd mynumpyproject

虽然上述步骤应该是您开始使用 numPy 和 python 所需的全部步骤,但您可以选择安装更多的工具,以使使用数据科学库对开发人员更加友好。这些工具可以是以下任何一种。

  • IPython

  • 木星笔记本

  • VS代码

  • 谷歌实验室

为了演示,我们将在 VS 代码编辑器中使用 python 笔记本。

发现熟练的python开发人员,没有开发后顾之忧!
提出您的要求,我们将帮助开发您的产品。Bacancy 经验丰富的开发人员适合您!立即联系并聘请 Python 开发人员。

Python 与 NumPy: NumPy 入门

让我们从使用 numPy 提供的基本数据类型开始,即numpy 数组。为此,让我们从导入 numPy 包开始。

Python 与 NumPy 教程:NumPy 数组简介
导入 numpy
my_array = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])打印(我的数组)

输出:

Python 与 NumPy 教程:NumPy 数组简介

现在,为了方便起见,numPy 通常以“np”作为别名导入。

*注意:别名是给任何事物的别名。

Python 与 NumPy 教程:NumPy 数组简介
将 numpy 导入为 npmy_array = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])打印(我的数组)

输出:

Python 与 NumPy 教程:NumPy 数组简介

基于应用的 NumPy 数组介绍

使用 NumPy 教程在 Python 中进一步移动,让我们使用 NumPy 数组开始我们的核心应用程序。

创建 NumPy 数组

在数据科学和机器学习应用程序中使用 numPy 的主要原因是需要高效地使用数组。Numpy 提供称为“ndarray”的数组对象。

numpy 函数“array()”可用于创建数组。

Python 与 NumPy 教程:NumPy 数组简介
将 numpy 导入为 npblank_array = np.array([])打印(空白数组)
my_array = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])打印(我的数组)打印(类型(空白数组))

输出:

Python 与 NumPy 教程:NumPy 数组简介

*注意:numpy 数组需要使用“array()”函数传递一个对象。如果函数没有传递对象类型参数,它会返回一个语法错误。

“array()”函数可以通过将任何类似数组的对象传递给它的参数(如列表、元组等)来使用。

数组中的维度

数组可以根据其维度进行分类。

0-D 数组
0-D 数组也可以称为标量。数组的每个元素本身就是一个 0 维数组。

1-D Arrays
1-D arrays 可以被认为是一个由多个 0-D 数组作为元素组成的数组。一维数组也叫一维数组,是最基本、最常用的数组。

二维数组
二维数组是由一维数组作为其元素组成的数组,常用于表示矩阵。

3-D 数组
3-D 数组是以矩阵(2-D 数组)作为其元素的数组。

Python 与 NumPy 教程:NumPy 数组简介
将 numpy 导入为 npzero_d_array = np.array(23)print("0-D 数组", zero_d_array)one_d_array = np.array([0, 1, 2, 3])print("一维数组", one_d_array)two_d_array = np.array([[0, 1, 2], [9, 8, 7]])print("二维数组",two_d_array)three_d_array = np.array([[[0, 1, 2], [9, 8, 7]], [[0, 1, 2], [9, 8, 7]]])print("三维数组",three_d_array)

输出:

Python 与 NumPy 教程:NumPy 数组简介

高维数组

Numpy 中的数组不限于只有三个维度。数组可以具有任意数量的维度,并且可以使用“ndmin”参数创建以定义数组中的参数数量。

Python 与 NumPy 教程:NumPy 数组简介
将 numpy 导入为 npmy_array = np.array([0, 1, 2, 3, 4, 5, 6], ndmin=4)print('数组维数:', my_array.ndim)打印(我的数组)

输出:

Python 与 NumPy 教程:NumPy 数组简介

这里,通过“ndmin”参数,可以看出它支持任意维数的数组。在上面的例子中,第 4 个维度,最里面的维度,有七个元素。

NumPy 中的数组索引

在 Python with NumPy Tutorial 中,下一节将介绍 NumPy 中的数组索引。可以使用数组索引访问数组元素。可以使用其索引号访问任何数组元素。此外,应该记住,与任何其他数组一样,numPy 数组的索引也从 0 开始。因此,第一个元素的索引始终为 0,第二个元素的索引为 1,依此类推。

可以使用数组索引访问元素以用于各种目的,例如访问元素、使用元素进行各种数学运算等。

Python 与 NumPy 教程:NumPy 数组简介
将 numpy 导入为 np
one_d_array = np.array([9, 8, 7, 6])
print("第一个元素:",one_d_array[0])print("第二个元素:",one_d_array[1])print("前2个元素相加:",one_d_array[0] + one_d_array[1])
two_d_array = np.array([[8,7,6,5], [4,3,2,1]])print("第一行第三个元素:", two_d_array[0,2])print("第二行第四个元素:", two_d_array[1,3])

输出:

Python 与 NumPy 教程:NumPy 数组简介

访问 3-D 数组或其他更高维数组中的元素

当谈到访问 3-D 数组或其他更高维数组中的元素时,它变得有点复杂。在操作它们之前,应该确保了解数组的结构或维度。以 3-D 数组为例:

Python 与 NumPy 教程:NumPy 数组简介
将 numpy 导入为 npthree_d_array = np.array([[[9, 8, 7], [0, 1, 2]], [[7, 8, 9], [5, 4, 3]]])打印(three_d_array[1, 0, 2])

输出:

Python 与 NumPy 教程:NumPy 数组简介

让我们试着理解这段代码的最后一行。

这里,
three_d_array[1, 0, 2]正在打印值 9。

相同的原因是第一个数字表示包含两个数组的第一个维度:
[[9, 8, 7], [0, 1, 2]] 和 [[7, 8, 9], [5, 4 , 3]]

由于我们选择了索引 1,因此剩下第二个数组:
[[7, 8, 9], [5, 4, 3]]

第二个数字代表第二个维度,也包含两个数组:
[7, 8, 9] 和 [5, 4, 3]

由于我们选择了索引 0,因此我们在索引 0 处留下了第一个数组:
[7, 8, 9]

现在,第三个数字代表第三个维度,其中包含这三个值:
7、8 和 9

由于我们选择了索引 2,因此我们得到最终值:
9

负索引

负索引也可用于从末尾访问数组元素。

Python 与 NumPy 教程:NumPy 数组简介
将 numpy 导入为 npmy_array = np.array([[1,2,3,4,5], [6,7,8,9,10]])print('二维的最后一个元素:', my_array[1, -2])

输出:

Python 与 NumPy 教程:NumPy 数组简介

在这里,可以看出输出是元素 9。

原因是语句“my_array[1, -2]”使用第一个索引值设置为 1 访问维度的第二个数组,即
[6, 7, 8, 9, 10]

然后,设置为 -2 的第二个索引值访问倒数第二个索引处的元素。
9

结论

所以,我希望 Python 和 NumPy 教程对您有所帮助。如需更多此类探索 Python 的教程,请访问Python 教程页面并开始学习。如果您有任何疑问或建议,请随时与我们联系。

(言鼎科技)

The End