矩阵加法不等矩阵

时间:2016-06-23 13:18:57

标签: python numpy matrix

据我所知,只有在尺寸相同的情况下才能添加2个矩阵。

考虑案例 -

1. a=eye(5)
   b=1

a + b有效,因为b被视为标量:

2. a=eye(5) 
   b=[1,2]

a + b - >由于尺寸不相等,这是无效的。

3. a=eye(5)
   b=[1,2,3,4,5]

a + b - >奇怪的是这是有效的。

这里,b被视为行向量并被添加到a的每一行。

输出结果为:

  ([[ 2.,  2.,  3.,  4.,  5.],
   [ 1.,  3.,  3.,  4.,  5.],
   [ 1.,  2.,  4.,  4.,  5.],
   [ 1.,  2.,  3.,  5.,  5.],
   [ 1.,  2.,  3.,  4.,  6.]])

为什么案例3合法?更具体地说,使这种法律合法化的原因是什么?我在python中发现了这个。这是一个随处可见的大会吗?

edit-eye代表单位矩阵

1 个答案:

答案 0 :(得分:3)

假设您正在使用Numpy,waterfall在添加不同大小的对象时会发生什么:

  

参数:

x1, x2 : array_like
     

要添加的数组。如果x1.shape != x2.shape,它们必须可以播放到一个共同的形状(可能是一个或另一个的形状)。

现在,让我们检查一下their docs explains

  

当比较的任何一个尺寸为1时,使用另一个尺寸。换句话说,尺寸为1的尺寸会被拉伸或“复制”以匹配另一个尺寸。

     

以下是一些例子:

A      (2d array):  5 x 4
B      (1d array):      1
Result (2d array):  5 x 4

因此,在您的情况下,列表b - 尺寸为5 x 1 - 被广播为a,5 x 5的维度。