[Numpy-discussion] how to tally the values seen
Warren Weckesser
warren.weckesser@enthought....
Wed Apr 14 01:34:17 CDT 2010
Gökhan Sever wrote:
>
>
> On Wed, Apr 14, 2010 at 1:10 AM, Peter Shinners <pete@shinners.org
> <mailto:pete@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>)
>
> 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])
Warren
> What is the most efficient way to do this?
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org <mailto:NumPy-Discussion@scipy.org>
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
>
>
> --
> Gökhan
> ------------------------------------------------------------------------
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
More information about the NumPy-Discussion
mailing list