《数据科学与分析:Python语言实现》 —2.4.2 NumPy数组和矩阵

举报
华章计算机 发表于 2020/02/15 20:08:46 2020/02/15
【摘要】 本节书摘来自华章计算机《数据科学与分析:Python语言实现》 一书中第2章,第2.4.2节,作者是[英]赫苏斯·罗格尔–萨拉查(Jesús Rogel-Salazar),白 皓 刘江一 上官明乔 刁 娟 译。

2.4.2 NumPy数组和矩阵

NumPy支持使用数组定义,扩展了Python支持的类型,该定义用于描述相同类型的对象集合。NumPy数组的维度由称为数组形状的N个正整数的元组定义。可以将数组视为列表的扩展,因此可以用列表创建数组:

 image.png

在上面的代码片段中,我们将导入NumPy包并使用别名np来引用该模块。借助NumPy中的array命令,我们将列表转换为数组对象。如果我们要打印数组C,将获得以下内容:

 image.png

请注意,在这种情况下,Python确实按预期叠加了元素。在上面的示例中,我们可以简单地使用上一节中的列表定义并编写如下:

 image.png

正如上面提到的,NumPy扩展了Python中列表的功能,以便能够执行矢量运算,例如:

  • 矢量加法:+

  • 矢量减法:-

  • 元素乘法:*

  • 点积:dot()

  • 叉乘:cross()

你可能已经注意到我们一直在说矢量运算,但是矩阵呢?NumPy当然也支持矩阵操作。我们通过np.matrix来定义矩阵:

 image.png

在这种情况下,我们使用矩阵命令来定义对象,并且乘法的结果是符合预期的:

 image.png

定义NumPy矩阵的另一种方法是使用mat函数来定义NumPy数组。

线性代数中广泛使用的操作是矩阵的转置。使用transpose命令可以很容易地实现这一点:

 image.png

最后,使用SciPy包,我们可以使用linalg方法,这将使我们能够进行一些典型的线性代数计算,如矩阵求逆:

 image.png

在上面的代码中,我们定义了数组x和y,然后借助线性代数模块的.inv命令计算n=(xTx)-1。请注意,代码中的命令.T返回矩阵的转置。然后我们计算k=xTy,最后是coef=nk =(xTx)-1xTy。使用dot()函数可以对数组进行矩阵乘法。我们将在第4章中详细讨论该计算的细节。

 image.png

我们故意将调用结果命名为coef,因为我们可以将这个计算结果简单地看作使用数组x和y的线性回归的系数。我们将在第4章对这个结果进行进一步讨论。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。