сравнить два следующих значения в массиве numpy - PullRequest
3 голосов
/ 24 марта 2010

Каков наилучший способ прикоснуться к двум следующим значениям в массиве numpy?

пример:

npdata = np.array([13,15,20,25])
for i in range( len(npdata) ):
    print npdata[i] - npdata[i+1]

это выглядит действительно запутанным и дополнительно нуждается в коде исключения для последней итерации цикла. есть идеи?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 24 марта 2010

numpy предоставляет функцию diff для этого базового варианта использования

>>> import numpy
>>> x = numpy.array([1, 2, 4, 7, 0])
>>> numpy.diff(x)
array([ 1,  2,  3, -7])

Ваш фрагмент вычисляет что-то ближе к -numpy.diff(x).

0 голосов
/ 24 марта 2010

Вы можете использовать ediff1d , чтобы получить различия последовательных элементов.В более общем смысле, a[1:] - a[:-1] даст различия последовательных элементов и может использоваться с другими операторами.

0 голосов
/ 24 марта 2010

Как насчет 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

Как вы видите, он успешно печатает суммы всех последовательных пар в массиве без каких-либо исключений для последней итерации.

...