python - numpy - 不同维度的numpy数组的总和

时间:2017-12-02 19:42:54

标签: python arrays numpy transpose

假设我们创建一个像这样的numpy数组:

x =  np.linspace(1,5,5).reshape(-1,1)

结果如下:

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

现在我们将这个数组的转置添加到它:

x + x.T

结果如下:

array([[  2.,   3.,   4.,   5.,   6.],
   [  3.,   4.,   5.,   6.,   7.],
   [  4.,   5.,   6.,   7.,   8.],
   [  5.,   6.,   7.,   8.,   9.],
   [  6.,   7.,   8.,   9.,  10.]])

我不明白这一点,因为两个数组有不同的维度(5x1和1x5),我在线性代数中学到了我们只能在它们具有相同维度时总结矩阵。

编辑:好的,谢谢,得到它

1 个答案:

答案 0 :(得分:1)

在这里,我们有

x = array([[ 1.],[ 2.],[ 3.],[ 4.],[ 5.]])
x.T = array([[ 1.,  2.,  3.,  4.,  5.]])

现在您尝试添加两个不同尺寸(1 X 5)和(5 X 1)的矩阵。

numpy处理这个问题的方法是将第1个矩阵的每一行中的元素复制到其列中以匹配第二个矩阵的多个列,并将第二个矩阵的每一列中的元素复制到其行中以匹配no。第1矩阵的行数。这给你2 5 X 5矩阵,可以加在一起。

元素添加以

完成
array([[ 1., 1., 1., 1., 1.],[ 2., 2., 2., 2., 2.,],[ 3., 3., 3., 3., 3.,],[4., 4., 4., 4., 4.],[ 5., 5., 5., 5., 5.,]]) + array([[ 1.,  2.,  3.,  4.,  5.],[ 1.,  2.,  3.,  4.,  5.],[ 1.,  2.,  3.,  4.,  5.],[ 1.,  2.,  3.,  4.,  5.],[ 1.,  2.,  3.,  4.,  5.]])

产生结果

array([[  2.,   3.,   4.,   5.,   6.],
   [  3.,   4.,   5.,   6.,   7.],
   [  4.,   5.,   6.,   7.,   8.],
   [  5.,   6.,   7.,   8.,   9.],
   [  6.,   7.,   8.,   9.,  10.]])