[SciPy-User] MATLAB accumarray equivalent ?
Mohammad Abdollahi
m.abdollahi at gmail.com
Wed Mar 31 06:28:20 EDT 2010
thank you for your replys, but both of these methods are for the case when
the subs argument is a vector. but apparently they can not be used when subs
is a matrix. i.e. the output of the function is meant to be a matrix too.
right ?
On Fri, Mar 26, 2010 at 4:25 PM, Alan G Isaac <aisaac at american.edu> wrote:
> On 3/26/2010 10:39 AM, Mohammad Abdollahi wrote:
> > Does anyone know what is the equivalent function of MATLAB's
> > "accumarray()" in scipy/numpy, with the exact same functionality ?
>
> That certainly gets the basic accumarray functionality:
>
> >>> vals = 101+np.arange(5)
> >>> subs = np.array([1,2,4,2,4])-1
> >>> np.bincount(subs,vals)
> array([ 101., 206., 0., 208.])
>
> Here's another way that maybe easier
> to adapt to whatever the OP needs:
>
> >>> from collections import defaultdict
> >>> d = defaultdict(float)
> >>> for i, cat in enumerate(subs):
> ... d[cat] += vals[i]
> ...
> >>> d
> defaultdict(<type 'float'>, {0: 101.0, 1: 206.0, 3: 208.0})
>
> That should actually be pretty fast,
> though not as fast as bincount of course.
>
> What's the use case?
>
> hth,
> Alan Isaac
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20100331/f2c809f8/attachment.html>
More information about the SciPy-User
mailing list