The vectorizing of fancy indexing by Python's numpy library sometimes gives unexpected results. For example:import numpya = numpy.zeros((1000,4), dtype='uint32')b = numpy.zeros((1000,4), dtype='uint32')i = numpy.random.random_integers(0,999,1000)j = numpy.random.random_integers(0,3,1000)a[i,j] += 1for k in xrange(1000):    b[i[k],j[k]] += 1Gives different results in the arrays 'a' and 'b' (i.e. the appearance of tuple (i,j) appears as 1 in 'a' regardless of repeats, whereas repeats are counted in 'b'). This is easily verified as follows:numpy.sum(a)883numpy.sum(b)1000It is also notable that the fancy indexing version is almost two orders of magnitude faster than the for loop. My question is: Is there an efficient way for numpy to compute the repeat counts as implemented using the for loop in the provided example?
Compound assignment operators in Python's Numpy library
python