This is the purpose of the group by NEP in NumPy. It is on the roadmap. In the mean time, you will need to either use Pandas group by or code something using indexing coupled with sum().
Thanks,
Travis
--
Travis Oliphant
(on a mobile)
512-826-7480
On Jan 31, 2012, at 2:34 PM, Alexander Kalinin <alec.kalinin@gmail.com> wrote:
> Hello!
>> I use SciPy in computer graphics applications. My task is to calculate vertex normals by averaging faces normals. In other words I want to accumulate vectors with the same ids. For example,
>> ids = numpy.array([0, 1, 1, 2])
> n = numpy.array([ [0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.1, 0.1 0.1] ])
>> I need result:
> nv = ([ [0.1, 0.1, 0.1], [0.2, 0.2, 0.2], [0.1, 0.1, 0.1]])
>> The most simple code:
> nv[ids] += n
> does not work, I know about this. For 1D arrays I use numpy.bincount(...) function. But this function does not work for 2D arrays.
>> So, my question. What is the best way calculate accumulation sum for 2D arrays using indirect indexes?
>> Sincerely,
> Alexander
> _______________________________________________
> SciPy-User mailing list
>SciPy-User@scipy.org>http://mail.scipy.org/mailman/listinfo/scipy-user