As JBernardo noted, += change the array in place.
a[3:] += [a:-3] similar to the following:
>>> import numpy as np >>> a = np.arange(10) >>> >>> for i in range(3, 10): ... print('a[{}] ({}) += a[{}] ({})'.format(i, a[i], i-3, a[i-3])) ... a[i] += a[i-3] ... print(' a[{}] -> {}'.format(i, a[i])) ... a[3] (3) += a[0] (0) a[3] -> 3 a[4] (4) += a[1] (1) a[4] -> 5 a[5] (5) += a[2] (2) a[5] -> 7 a[6] (6) += a[3] (3) a[6] -> 9 a[7] (7) += a[4] (5)
To avoid this, use a copy of the array:
>>> a = np.arange(10) >>> a[3:] += np.copy(a[:-3])
source share