不同维数组之间的数字加法

问题描述 投票:0回答:1

我正在运行以下代码:

import numpy as np

a = np.array([1, 2])
b = np.array([[1, 2]])
a = a + b

print(a)
[[2 , 4 ]]

如您所见。 a的尺寸为1,b的尺寸为2。

从数学上讲,不可能在不同的维数组之间添加它如何在numpy下工作?这是什么意思[[2,4,]]

  • a.shape是(2,)
  • b.shape是(1,2)
  • ((a + b).shape是(1,2)

但是以下代码会产生错误:

import numpy as np

a = np.array([1, 2])
b = np.array([[1, 2]])
a += b

为什么不起作用?是什么导致不同的结果?

python arrays numpy matrix dimensions
1个回答
0
投票

正如@ user2357112supportsMonica所写,它总是有助于检查文档。

我是从https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html引述:

当在两个数组上进行操作时,NumPy逐元素比较它们的形状。它从尾随尺寸开始,一直向前发展。当

时,两个维度兼容
  1. 它们相等,

  2. 或其中之一是1

    ] >>

在您的情况下,两个数组共享一个具有1个元素的维(A中为1列,B中为1行)。

因此,它们以数学上没有意义的方式添加它们。

如果您对此进行了更改,并且数组的维数均为1,则将出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.