I am using digitize to create a list of indices. This is giving me exactly what I want, but it's terribly slow. Digitize is obviously not the tool I want for this case, but what numpy alternative do I have?
I have an array like np.array((4, 3, 3)). I need to create an index array with each index repeated by the its value: np.array((0, 0, 0, 0, 1, 1, 1, 2, 2, 2)). >>> a = np.array((4, 3, 3)) >>> b = np.arange(np.sum(a)) >>> c = np.digitize(b, a) >>> print c [0 0 0 0 1 1 1 2 2 2] On an array where a.size==65536 and sum(a)==65536 this is taking over 6 seconds to compute. As a comparison, using a Python list solution runs in 0.08 seconds. That is plenty fast, but I would guess there is a faster Numpy solution that does not require a dynamically growing container of PyObjects ? >>> a = np.array((4, 3, 3)) >>> c = [] >>> for i, v in enumerate(a): ... c.extend([i] * v) _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion