Python numpy array sum over certain indices Python numpy array sum over certain indices numpy numpy

Python numpy array sum over certain indices


You can use sum directly after indexing with indices:

a = np.array([1,2,3,4])indices = [0, 2] a[indices].sum()


The accepted a[indices].sum() approach copies data and creates a new array, which might cause problem if the array is large. np.sum actually has an argument to mask out colums, you can just do

np.sum(a, where=[True, False, True, False])

Which doesn't copy any data.

The mask array can be obtained by:

mask = np.full(4, False)mask[np.array([0,2])] = True


Try:

>>> a = [1,2,3,4]>>> indices = [0, 2]>>> sum(a[i] for i in indices)4

Faster

If you have a lot of numbers and you want high speed, then you need to use numpy:

>>> import numpy as np>>> a = np.array([1,2,3,4])>>> a[indices]array([1, 3])>>> np.sum(a[indices])4