Question: Given two integer arrays `a` and `b`, where the elements in `b` represent indices of `a`...

```
a = array([10,10,10,8,8,8])

b = array([0,2,3,5])

```

I want to generate a new array whose elements are the sums of the elements in `a` along the index ranges given in `b`, not including the element at the tail of the range... It's hard to put in words, but the expected result given `a` and `b` from above would be:

```
result = array([0, # sum(a[:0])
                20,  # sum(a[0:2])
                10,  # sum(a[2:3])
                16])  # sum(a[3:5])

```

How could I achieve this in a vectorized/"numpythonic" way?

Thank you!

Answer: 
You can try this:

```
import numpy as np

a = np.array([10,10,10,8,8,8])
b = np.array([0,2,3,5])

list(map(sum, np.split(a, b)))

```

It gives:

```
[0, 20, 10, 16, 8]

```

The last number is the sum of the slice `a[5:]`.
Is that what you are looking for?

```
import numpy as np

a = np.array([10,10,10,8,8,8])

b = np.array([0,2,3,5])

result = []

for i, v in enumerate(b):
    result.append(sum(a[b[i-1]:v]))

result = np.array(result)

```

The result:

```
[ 0 20 10 16]

```