On Wed, Apr 14, 2010 at 1:10 AM, Peter Shinners <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) > > 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. > > What is the most efficient way to do this? > _______________________________________________ > NumPy-Discussion mailing list > 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