On Sun, Aug 24, 2008 at 8:03 PM, Dan Lenski <[EMAIL PROTECTED]> wrote:

> Hi all,
> Is there a good reason why the weights parameter of np.average() doesn't
> broadcast properly?  This is with the Ubuntu Hardy x86_64 numpy package,
> version 1.0.4.
>
>
> In [293]: a=arange(100).reshape(10,10)
>
> # Things work fine when weights have the exact same shape as a
>
> In [297]: average(a, axis=1, weights=ones((10,10)))
> Out[297]: array([  4.5,  14.5,  24.5,  34.5,  44.5,  54.5,  64.5,  74.5,
> 84.5,  94.5])
>
> # Bizarre and incorrect result with length-10 weight array
>
> In [298]: average(a, axis=1, weights=ones(10))
> Out[298]:
> array([[[[[[[[[  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.],
>              [ 10.,  11.,  12.,  13.,  14.,  15.,  16.,  17.,  18.,  19.],
>              [ 20.,  21.,  22.,  23.,  24.,  25.,  26.,  27.,  28.,  29.],
>              [ 30.,  31.,  32.,  33.,  34.,  35.,  36.,  37.,  38.,  39.],
>              [ 40.,  41.,  42.,  43.,  44.,  45.,  46.,  47.,  48.,  49.],
>              [ 50.,  51.,  52.,  53.,  54.,  55.,  56.,  57.,  58.,  59.],
>              [ 60.,  61.,  62.,  63.,  64.,  65.,  66.,  67.,  68.,  69.],
>              [ 70.,  71.,  72.,  73.,  74.,  75.,  76.,  77.,  78.,  79.],
>              [ 80.,  81.,  82.,  83.,  84.,  85.,  86.,  87.,  88.,  89.],
>              [ 90.,  91.,  92.,  93.,  94.,  95.,  96.,  97.,  98.,  99.]
>       ]]]]]]]])
>

This has been fixed in later versions:

In [2]: a=arange(100).reshape(10,10)

In [3]: average(a, axis=1, weights=ones(10))
Out[3]: array([  4.5,  14.5,  24.5,  34.5,  44.5,  54.5,  64.5,  74.5,
84.5,  94.5])

However, broadcasting in the axis=None case is not allowed. The thinking is
that the weights must be fully specified for the axis (or None) that is
being averaged over.

Chuck
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to