前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习储备(7):numpy一维数组和矩阵

机器学习储备(7):numpy一维数组和矩阵

作者头像
double
发布2018-04-02 14:25:43
1K0
发布2018-04-02 14:25:43
举报
文章被收录于专栏:算法channel算法channel算法channel

Numpy 是用 python封装的科学计算库,是一个精简版matlab 。 下面总结下在模拟脊回归的超参数:收缩率,与权重参数的关系时,用到的一些numpy运算规则,顺便扩展下其他的相关运算。

1 矩阵相加

原来A和B还能这样相加,请看下列:

A = np.array( [1,2,3] )

np.shape(A)

(3,)

B= np.array([ [10],[11]] )

np.shape(B)

(2,1)

A+B

array([[11, 12, 13],

[12, 13, 14]])

按照我们之前学习的线性代数中,矩阵的相加首先得满足A和B是同型矩阵才行,都是m行n列。所以在numpy操作以上两个数组时,显然不是线性代数意义上的同型矩阵,但是仍然可以相加,这是为什么呢。

原来numpy自动做了一些处理,将A自动补全为B的行数,将B自动补全为A的列数。因此,将 A数组转化为:

array([[1, 2, 3],

[1, 2, 3] ])

将B转化为:

array([[10, 10, 10],

[11, 11, 11]])

然后这样就是线性代数中的同型矩阵了,然后按照理解相加即可。为什么numpy要这么做呢? 注意在线代中的矩阵都是二维数组,观察我们开始说的那个A,它本质上并不是矩阵,只是一个一维数组,关于什么是数组的维数测试,请看本文第3节,所以它要提升1个维度。

2 矩阵转置和shape

大部分情况都和线性代数中的理论相同,比如

A = np.array([[11, 12, 13],

[12, 13, 14]])

np.shape(A)

(2,3)

np.shape(A.T)

(3, 2)

到现在,和我们传统意义上的理解没有什么区别。但是有一种情况,会很特殊,如果数组只有一行,例如:

B = array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),看一下几行几列:

np.shape(B)

(10,)

此处就是与线代不一样的地方,此处,numpy中shape显示的是10,至于为什么显示的是10,因为它是一维的数组,线代中的矩阵都是二维的。

然后,再做转置,如下

np.shape(B.T)

仍然是:(10,)

在B长这个样子下,转置后的样子与原来的样子一样。

观察发现,B和B.T 它们都带一对方括号的,所以shape只显示一个数,对于这种仅含一对方括号的数组而言,都没有几行几列这个说法,因为是一维的。

如果要想做出像线代中的那种1行10列的矩阵,我们在numpy中应该怎么写呢?numpy中的写法如下所示:

B2 = array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])

此时B2的 shape 结果显示:(1,10)

那么这是如何做到的呢? 需要借助 np.newaxis实现这个功能:B[np.newaxis,:] ,执行它后,B就变为B2了。

由此引出了numpy中的一个重要概念,维数 dimension

3 numpy中的dimension

我们分别测试下上节中的B和B2的维数有什么不同,需要调用numpy中的ndim接口看数组的位数。

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

np.ndim(B)

1

B2 = array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])

np.ndim(B2)

2

再体验一个维数为3的数组:

test = [[[1,2,3]],[[4,8,12]]]

np.ndim(test)

3

4 总结

总结以上所述,numpy中的一维数组和线代中的矩阵是很不相同的,这样导致了它们的运算也就很不一样;但是numpy中的二维数组就等同于线代中的矩阵了,所以按照线代的理解去对它们做运算,就都符合我们的逻辑习惯了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档