NumPy广播是联合的吗?

NumPy广播是联合的吗?,numpy,array-broadcasting,Numpy,Array Broadcasting,假设我有三个numpy.ndarray的a,b,c,这样当我将它们相乘时,就会发生广播 结果是否取决于乘法的顺序 换句话说,是否存在a、b、c,以便: (a * b) * c != a * (b * c) 是的,它是关联的。说 结果的秩(维数)是输入秩的max(如果需要,使用左填充1) 每个轴上的尺寸是该轴上尺寸的max(前提是max不涉及两个都大于1的不同数字,在这种情况下会引发错误) 函数max是关联的:max(a,max(b,c))=max(max(a,b,c)。因此,无论括号是什么

假设我有三个
numpy.ndarray
a,b,c
,这样当我将它们相乘时,就会发生广播

结果是否取决于乘法的顺序

换句话说,是否存在a、b、c,以便:

(a * b) * c != a * (b * c)
是的,它是关联的。说

  • 结果的秩(维数)是输入秩的
    max
    (如果需要,使用左填充
    1
  • 每个轴上的尺寸是该轴上尺寸的
    max
    (前提是
    max
    不涉及两个都大于1的不同数字,在这种情况下会引发错误)

函数
max
是关联的:
max(a,max(b,c))=max(max(a,b,c)
。因此,无论括号是什么,输出的形状都是相同的。此外,抛出“操作数无法广播”错误的条件相当于:对于每个轴,大于1的所有维度都相等;这个条件根本不需要括号

我还没有看到广播是关联的正式声明或证据,但如果不是,它将使乘法的关联性无效,并引发错误报告等问题。这证明了输出形状是关联的。输出的元素是什么?我认为,因为你只能沿着大小为“1”的轴进行广播,这意味着广播一次只能在一个轴上运行,这使得它独立于轴的顺序,对吗?