【问题标题】:numpy addition between different dimensional arrays不同维数组之间的numpy加法
【发布时间】:2020-07-06 15:10:35
【问题描述】:

我正在运行以下代码:

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】:

正如 cmets 中已经暗示的那样,检查documentation 总是有帮助的;引用:

当对两个数组进行操作时,NumPy 会逐元素比较它们的形状。它从尾随维度开始,然后向前推进。两个维度兼容时

  1. 他们是平等的,

  2. 或其中之一是 1

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

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

如果你改变了这个并且有共享维度为 1 的数组,那么你会得到一个错误。

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多