在我看来,numpy似乎对广播阵列有一些非故意的行为。假设我们有两个数组
  
  a = numpy.ones((2,2,3))
b = numpy.array([[1],[2]])
  
   我希望能够将这些值相乘,输出为
  
  >>> a*b
array([[[1., 1., 1.],
        [1., 1., 1.]],
       [[2., 2., 2.],
        [2., 2., 2.]]])
  
   但是我们得到
  
  >>> a*b
array([[[1., 1., 1.],
        [2., 2., 2.]],
       [[1., 1., 1.],
        [2., 2., 2.]]])
  
   事实上,这个乘法只起作用,因为
   
    第二
   
   尺寸
   
    a
   
   和
   
    外面的
   
   尺寸
   
    b
   
   (2,在这种情况下)。如果有的话
   
    a = numpy.ones((2,3,3))
   
   ,我得到以下错误:
  
  >>> a*b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (2,3,3) (2,1)
  
   我发现这很奇怪的原因是,将形状(3,4)和(1,)的数组一起广播会很好地工作-那么,当它们是两个较大数组的“子数组”时,为什么不工作呢?
  
  
   做我想做的事最‘蟒蛇’的方式是什么?具体地说,这是为了创建一个三维数组,其中每个二维子数组在整个过程中都有不同的值。显然,我可以用一个循环,但它看起来并不优雅。