Vectorized numpy version of arange with multiple start stop
This code looks good to me: the docstring is clear and the implementation is simple and efficient. So I have only a few minor points.


The code doesn't fit in 80 columns, meaning that we have to scroll it horizontally to read it here on Code Review.
The docstring contains an example. If it were formatted like this:

&gt;&gt;&gt; starts = np.array([1, 3, 4, 6])
&gt;&gt;&gt; lengths = np.array([0, 2, 3, 0])
&gt;&gt;&gt; vrange(starts, lengths)
array([3, 4, 4, 5, 6])


then it could be run using the doctest module, allowing you to automatically check that it is correct.
The example in the docstring uses the print statement and so is not compatible with Python 3.
I think it would be clearer to take a stops array instead of a lengths array. It would then have an interface that corresponds closely to range and numpy.arange. Possibly lengths is more convenient for your application, but you can easily calculate stops = starts + lengths.
The docstring says that starts and lengths must be "numpy.array", by which I think you mean numpy.ndarray, but in fact it's OK for starts to be an array_like because the code doesn't call any methods on it.
It would be possible to allow lengths to be array_like too, by calling numpy.asarray.
The implementation requires starts and lengths to be 1-dimensional, so the docstring should mention this.
The implementation carries out a sum that includes (among other terms):

np.repeat(starts, lengths) - np.repeat(lengths.cumsum() - lengths, lengths)


this is the same as:

np.repeat(starts - lengths.cumsum() + lengths, lengths)


which saves a call to numpy.repeat, and this is the same as:

np.repeat(stops - lengths.cumsum(), lengths)



Putting all that together, I get:

def vrange(starts, stops):
    """Create concatenated ranges of integers for multiple start/stop

    Parameters:
        starts (1-D array_like): starts for each range
        stops (1-D array_like): stops for each range (same shape as starts)

    Returns:
        numpy.ndarray: concatenated ranges

    For example:

        &gt;&gt;&gt; starts = [1, 3, 4, 6]
        &gt;&gt;&gt; stops  = [1, 5, 7, 6]
        &gt;&gt;&gt; vrange(starts, stops)
        array([3, 4, 4, 5, 6])

    """
    stops = np.asarray(stops)
    l = stops - starts # Lengths of each range.
    return np.repeat(stops - l.cumsum(), l) + np.arange(l.sum())


This is not quite as clear as your implementation: it's hard to give a concise explanation of what stops - l.cumsum() means. So I can see an argument for preferring the more explanatory version even if it does have an extra call to numpy.repeat.