据我所知,只有在尺寸相同的情况下才能添加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代表单位矩阵
答案 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的维度。