Как насчет range(len(npdata) - 1)
?
Вот код (с использованием простого массива, но это не имеет значения):
>>> ar = [1, 2, 3, 4, 5]
>>> for i in range(len(ar) - 1):
... print ar[i] + ar[i + 1]
...
3
5
7
9
Как вы видите, он успешно печатает суммы всех последовательных пар в массиве без каких-либо исключений для последней итерации.