On 04/13/2010 11:44 PM, Gökhan Sever wrote:
On Wed, Apr 14, 2010 at 1:34 AM, Warren Weckesser
<warren.weckes...@enthought.com
<mailto:warren.weckes...@enthought.com>> wrote:
Gökhan Sever wrote:
>
>
> On Wed, Apr 14, 2010 at 1:10 AM, Peter Shinners
<p...@shinners.org <mailto:p...@shinners.org>
> <mailto:p...@shinners.org <mailto:p...@shinners.org>>> wrote:
>
> I have an array that represents the number of times a value
has been
> given. I'm trying to find a direct numpy way to add into
these sums
> without requiring a Python loop.
>
> For example, say there are 10 possible values. I start with an
> array of
> zeros.
>
> >>> counts = numpy.zeros(10, numpy.int <http://numpy.int>
<http://numpy.int>)
>
> Now I get an array with several values in them, I want to
add into
> counts. All I can think of is a for loop that will give my the
> results I
> want.
>
>
> >>> values = numpy.array((2, 8, 1))
> >>> for v in values:
> ... counts[v] += 1
> >>> print counts
> [0 1 1 0 0 0 0 0 1 0]
>
>
> This is easy:
>
> I[3]: a
> O[3]: array([ 0., 1., 1., 0., 0., 0., 0., 0., 1., 0.])
>
> I[4]: a = np.zeros(10)
>
> I[5]: b = np.array((2,8,1))
>
> I[6]: a[b] = 1
>
> I[7]: a
> O[7]: array([ 0., 1., 1., 0., 0., 0., 0., 0., 1., 0.])
>
> Let me think about the other case :)
>
>
> I also need to handle the case where a value is listed more
than once.
> So if values is (2, 8, 1, 2) then count[2] would equal 2.
>
numpy.bincount():
In [1]: import numpy as np
In [2]: x = np.array([2,8,1,2,7,7,2,7,0,2])
In [3]: np.bincount(x)
Out[3]: array([1, 1, 4, 0, 0, 0, 0, 3, 1])
I knew a function exists in numpy for this case too :)
This is also safer way to handle the given situation to prevent index
out of bounds errors.
Thanks guys. Numpy always surprises me. It's like you guys have borrowed
Guido's time machine.
This is running far faster than I ever hoped.
My next problem involves a bit of indexing and reordering. But I'm gonna
spend a night of my own time to see where I can get with it.
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion