Gökhan Sever wrote: > > > On Wed, Apr 14, 2010 at 1:10 AM, Peter Shinners <[email protected] > <mailto:[email protected]>> 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 > [email protected] <mailto:[email protected]> > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > > > > -- > Gökhan > ------------------------------------------------------------------------ > > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
