gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:28 24 4
gpt4 key购买 nike

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

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

最佳答案

在这里,我们有

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

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

numpy 处理此问题的方法是跨其列复制第一个矩阵的每一行中的元素以匹配第二个矩阵的多个列,并跨其行复制第二个矩阵的每一列中的元素以匹配编号。第一个矩阵的行数。这给你 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.]])

关于python - numpy - 不同维度的numpy数组的求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47611823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com