【问题标题】:python - numpy - summation of numpy arrays of different dimensionpython - numpy - 不同维度的numpy数组的总和
【发布时间】:2017-12-02 19:42:53
【问题描述】:

假设我们像这样创建一个 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),并且我在线性代数中了解到,我们只能对具有相同维度的矩阵求和。

编辑:好的,谢谢,明白了

【问题讨论】:

标签: python arrays numpy transpose


【解决方案1】:

这里有

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

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

numpy 处理这个问题的方式是通过复制第一个矩阵的每一行中的元素跨其列以匹配第二个矩阵的许多列,并复制第二个矩阵的每一列中的元素跨其行以匹配 no。第一个矩阵的行数。这为您提供了 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.]])

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 2020-03-18
    • 2022-12-09
    • 1970-01-01
    • 2017-07-15
    • 2022-12-31
    • 2011-03-04
    相关资源
    最近更新 更多