***[Possible UCE]*** Re: [Numpy-discussion] Broadcasting rules (Ticket 76).

Travis Oliphant oliphant.travis at ieee.org
Mon Apr 24 11:25:06 EDT 2006


Zachary Pincus wrote:
>> It would be very difficult to change the other broadcasting behavior 
>> which was inherited from Numeric, however.  The only possibility I 
>> see is adding new useful functionality where Numeric used to raise an 
>> error.
>
> Well, there is one case that I run into all of the time where the 
> broadcasting rules seem a bit constraining:
>
> In [1]: import numpy
> In [2]: numpy.__version__
> '0.9.7.2335'
> In [3]: a = numpy.ones([50, 100])
> In [4]: means = a.mean(axis = 1)
> In [5]: print a.shape, means.shape
> (50, 100) (50,)
> In [5]: a / means
> ValueError: index objects are not broadcastable to a single shape
> In [6]: (a.transpose() / means).transpose()
> #this works
>
> It's obvious why this doesn't work due to the broadcasting rules, but 
> it also seems (to me, in this case at least) obvious what I am trying 
> to do. I don't think I'm suggesting that the broadcasting rules be 
> changed to allow matching-from-the-right in the general case, since 
> that seems likely to make the broadcasting rules even more difficult 
> to grok. But there do seem to be a lot of (....transpose() ... 
> ).transpose() bits in my code.
>
> Is there anything to be done here? I presume not, but I just wanted to 
> mention it.

Yes,  just be more explicit about which end to tack extra dimensions 
onto (the automatic extension always assumes pre-pending...)

a / means[:,newaxis]

is the suggested spelling...

-Travis





More information about the NumPy-Discussion mailing list