Python和DataScience:探索Numpy通用库的功能



译者的话:这是Rakshit Vasudev资料的翻译,他长期研究DataScience并在其中使用Python语言。 作者讨论了功能强大的Numpy库,它使您可以实现机器学习和处理大数据的许多功能。

Numpy是Python的数学库。 它使您可以快速有效地执行各种计算。 由于使用了特殊的解决方案,它大大扩展了Python的功能。 本文讨论Numpy的基本功能,这只是第一部分; 其他将在稍后发布。 本文适用于刚开始学习Numpy并进入Python勇敢的数学世界的人们。

Skillbox建议: Python开发人员从头开始 实践课程。
我们提醒您: 对于所有“哈勃”读者来说,使用“哈勃”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。

导入库


import numpy as np 

至此,我们告诉Python np是Numpy的引用,它将继续使用。

现在创建一个python数组和一个np数组。

 # python array a = [1,2,3,4,5,6,7,8,9] # numpy array A = np.array([1,2,3,4,5,6,7,8,9]) 

提款没有太大区别。

 print(a) print(A) ==================================================================== [1, 2, 3, 4, 5, 6, 7, 8, 9] [1 2 3 4 5 6 7 8 9] 

那么,为什么使用numpy数组而不是通常的数组更好呢? 答案是因为np将使我们能够更快地进行计算并修改应用程序的整体体系结构。

np.arange()


 np.arange(0,10,2) ==================================================================== array([0, 2, 4, 6, 8]) 

([开始],停止,[步骤])对数字进行排序。 这对汽车意味着什么。

我们创建一个从0到10的np列表,但不包括10,并且每次将数字增加2。

因此,我们得到:
数组([0,2,4,6,8])

重要的是要记住,列表中不包括最后一位。

另一个例子:

 np.arange(2,29,5) ==================================================================== array([2, 7, 12, 17, 22, 27]) 

该数组也可以称为矩阵或向量。 因此,当我说例如“矩阵的形状为2 * 3”时,请不要担心。 所有这些意味着我们的数组最终将看起来像这样:

 array([2, 7, 12], [17, 22, 27]) 

现在让我们讨论默认np数组的参数,例如shape。 这里的形状是一个属性。 下面是其用法示例。

 A = [1, 2, 3, 4, 5, 6, 7, 8, 9] A.shape ==================================================================== (9,) 

这是一个数字矩阵,一行中只有9个元素。 原则上,1 * 9矩阵是理想的,对吗?

基本上,是的,为此,reshape()开始起作用。 这是一种根据需要调整原始矩阵大小的方法。

这是在实践中使用reshape()的示例。

 A = [1, 2, 3, 4, 5, 6, 7, 8, 9] A.reshape(1,9) ==================================================================== array([[1, 2, 3, 4, 5, 6, 7, 8, 9]]) 

请注意,整形将返回多维矩阵。 开头用两个方括号表示。 与[1、2、3、4、5、6、7、8、9]不同,[[1、2、3、4、5、6、7、8、9]]是潜在的多维矩阵。

另一个例子:

 B = [1, 2, 3, 4, 5, 6, 7, 8, 9] B.reshape(3,3) ==================================================================== array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 

如果我们为B选取shape参数,则为(3.3):

 B.shape ==================================================================== (3,3) 

让我们继续到np.zeros()


这段代码说明了什么?

 np.zeros((4,3)) ==================================================================== ??????????? 

即:这里给出了一个3 * 4格式的矩阵,该矩阵用零填充。 结论如下:

 np.zeros((4,3)) ==================================================================== array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]) 

np.zeros((n,m))返回一个n * m格式的矩阵,该矩阵用零填充。 一切都很简单。

np.eye()有什么作用?


向我们返回具有某些特征的单位矩阵。

 np.eye(5) ==================================================================== array([[1., 0., 0., 0., 0.], [0., 1., 0., 0., 0.], [0., 0., 1., 0., 0.], [0., 0., 0., 1., 0.], [0., 0., 0., 0., 1.]]) 

如何将两个矩阵相乘?


没问题:为此使用np.dot(),如果将矢量和矩阵乘积(最普通的)传递给它,则此函数为标量积。

示例:A =(2,3)&B =(3,2)。 此处,A中的列数为3。B中的行数为3。由于特性一致,因此可以进行乘法运算。

 # generate an identity matrix of (3 x 3) I = np.eye(3) I ==================================================================== array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) # generate another (3 x 3) matrix to be multiplied. D = np.arange(1,10).reshape(3,3) D ==================================================================== array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 

我们已经准备好要进行乘法运算的矩阵。 接下来-我们采取行动。

 # perform actual dot product. M = np.dot(D,I) M ==================================================================== array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) 

现在让我们将各个元素添加到矩阵中。


 # add all the elements of matrix. sum_val = np.sum(M) sum_val ==================================================================== 45.0 

np.sum()将元素添加到矩阵。

但是,我们有两个选择。

1.排成一排

 # sum along the rows np.sum(M,axis=1) ==================================================================== array([ 6., 15., 24.]) 

6-第一行的总和(1、2、3)。
15-秒(4、5、6)。
24-第三(7,8,9)。

2.折成列

 # sum along the cols np.sum(M,axis=0) ==================================================================== array([12., 15., 18.]) 

12-第一列的总和(1、4、7)。
15-根据第二个(2、5、7)。
18-根据第三个(3,6,9)。

以下是作者创作的视频,上面的所有内容都将更清楚地进行解释。


Skillbox建议:

Source: https://habr.com/ru/post/zh-CN422423/


All Articles