当前位置: 移动技术网 > IT编程>脚本编程>Python > 理解-NumPy

理解-NumPy

2019年08月17日  | 移动技术网IT编程  | 我要评论

齐云山天气,单人操作分析仪,里尼尔布

# 理解 numpy

在这篇文章中,我们将介绍使用numpy的基础知识,numpy是一个功能强大的python库,允许更高级的数据操作和数学计算。

# 什么是 numpy?

numpy是一个功能强大的python库,主要用于对多维数组执行计算。numpy这个词来源于两个单词-- numericalpython。numpy提供了大量的库函数和操作,可以帮助程序员轻松地进行数值计算。这类数值计算广泛用于以下任务:

  • 机器学习模型:在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。numpy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。numpy数组用于存储训练数据和机器学习模型的参数。

  • 图像处理和计算机图形学:计算机中的图像表示为多维数字数组。numpy成为同样情况下最自然的选择。实际上,numpy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。

  • 数学任务:numpy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于python的matlab的快速替代。

# numpy 的安装

在你的计算机上安装numpy的最快也是最简单的方法是在shell上使用以下命令:pip install numpy

这将在你的计算机上安装最新/最稳定的numpy版本。通过pip安装是安装任何python软件包的最简单方法。现在让我们来谈谈numpy中最重要的概念,numpy数组。

# numpy 中的数组

numpy提供的最重要的数据结构是一个称为numpy数组的强大对象。numpy数组是通常的python数组的扩展。numpy数组配备了大量的函数和运算符,可以帮助我们快速编写上面讨论过的各种类型计算的高性能代码。让我们看看如何快速定义一维numpy数组:

import numpy as np 
my_array = np.array([1, 2, 3, 4, 5]) 
print my_array

在上面的简单示例中,我们首先使用import numpy作为np导入numpy库。然后,我们创建了一个包含5个整数的简单numpy数组,然后我们将其打印出来。继续在自己的机器上试一试。在看 “numpy安装” 部分下面的步骤的时候,请确保已在计算机中安装了numpy。

现在让我们看看我们可以用这个特定的numpy数组能做些什么。

print my_array.shape

它会打印我们创建的数组的形状:(5, )。意思就是 my_array 是一个包含5个元素的数组。

我们也可以打印各个元素。就像普通的python数组一样,numpy数组的起始索引编号为0。

print my_array[0]
print my_array[1]

上述命令将分别在终端上打印1和2。我们还可以修改numpy数组的元素。例如,假设我们编写以下2个命令:

my_array[0] = -1
print my_array

我们将在屏幕上看到:[-1,2,3,4,5]

现在假设,我们要创建一个长度为5的numpy数组,但所有元素都为0,我们可以这样做吗?是的。numpy提供了一种简单的方法来做同样的事情。

my_new_array = np.zeros((5)) 
print my_new_array

我们将看到输出了 [0., 0., 0., 0., 0.]。与 np.zeros 类似,我们也有 np.ones。 如果我们想创建一个随机值数组怎么办?

my_random_array = np.random.random((5))
print my_random_array

我们得到的输出看起来像 [0.22051844 0.35278286 0.11342404 0.79671772 0.62263151] 这样的数据。你获得的输出可能会有所不同,因为我们使用的是随机函数,它为每个元素分配0到1之间的随机值。

现在让我们看看如何使用numpy创建二维数组。

my_2d_array = np.zeros((2, 3)) print my_2d_array

这将在屏幕上打印以下内容:

[[0. 0. 0.]

[0. 0. 0.]]

猜猜以下代码的输出结果如何:

my_2d_array_new = np.ones((2, 4)) print my_2d_array_new

这里是:

[[1. 1. 1. 1.]

[1. 1. 1. 1.]]

基本上,当你使用函数np.zeros()np.ones()时,你可以指定讨论数组大小的元组。在上面的两个例子中,我们使用以下元组,(2, 3) 和(2, 4) 分别表示2行,3列和4列。像上面那样的多维数组可以用 my_array[i][j] 符号来索引,其中i表示行号,j表示列号。i和j都从0开始。

my_array = np.array([[4, 5], [6, 1]])
print my_array[0][1]

上面的代码片段的输出是5,因为它是索引0行和索引1列中的元素。

你还可以按如下方式打印my_array的形状:

print my_array.shape

输出为(2, 2),表示数组中有2行2列。

numpy提供了一种提取多维数组的行/列的强大方法。例如,考虑我们上面定义的my_array的例子。

[[4 5] [6 1]]

假设,我们想从中提取第二列(索引1)的所有元素。在这里,我们肉眼可以看出,第二列由两个元素组成:51。为此,我们可以执行以下操作:

my_array_column_2 = my_array[:, 1] 
print my_array_column_2

注意,我们使用了冒号(:)而不是行号,而对于列号,我们使用了值1,最终输出是:[5, 1]

我们可以类似地从多维numpy数组中提取一行。现在,让我们看看numpy在多个阵列上执行计算时提供的强大功能。

# numpy中的数组操作

使用numpy,你可以轻松地在数组上执行数学运算。例如,你可以添加numpy数组,你可以减去它们,你可以将它们相乘,甚至可以将它们分开。 以下是一些例子:

import numpy as np 
a = np.array([[1.0, 2.0], [3.0, 4.0]]) 
b = np.array([[5.0, 6.0], [7.0, 8.0]]) 
sum = a + b 
difference = a - b 
product = a * b 
quotient = a / b 
print "sum = \n", sum 
print "difference = \n", difference 
print "product = \n", product 
print "quotient = \n", quotient 

# the output will be as follows: 

sum = [[ 6. 8.] [10. 12.]]
difference = [[-4. -4.] [-4. -4.]]
product = [[ 5. 12.] [21. 32.]]
quotient = [[0.2 0.33333333] [0.42857143 0.5 ]]

如你所见,乘法运算符执行逐元素乘法而不是矩阵乘法。 要执行矩阵乘法,你可以执行以下操作:

matrix_product = a.dot(b) 
print "matrix product = ", matrix_product

输出将是:

[[19. 22.]

[43. 50.]]

总结

如你所见,numpy在其提供的库函数方面非常强大。你可以使用numpy公开的优秀的api在单行代码中执行大型计算。这使它成为各种数值计算的优雅工具。如果你希望自己成为一名数学家或数据科学家,你一定要考虑掌握它。在熟练掌握numpy之前,你需要了解python。

你可以在 hackr.io 上找到编程社区推荐的最佳python 教程,愿上帝保佑你!

文章出处

由numpy中文文档翻译,原作者为 vijay singh,翻译至:。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网