2015-09-30 2 views
0

Предположим, у меня есть массив чисел, и я хочу создать новый массив, который является разницей между последовательными элементами. (Я надеюсь, что этот ответ на этот вопрос обобщен на другие функции, кроме различия!)Конкретный способ создания массива различий (из массива)

Есть ли сжатый способ сделать это? Решения для как регулярных имплантаций Python, так и стимулов с помощью Numpy/Pandas были бы оценены!

Не очень-лаконичный способ:

for index in range(len(array)): 
    if index < len(array) - 1: 
     differences.append(array[index+1]-array[index]) 
+3

Посмотрите на [ 'numpy.diff'] (HTTP: // документы .scipy.org/DOC/NumPy/ссылка/полученные/numpy.diff.html). – Divakar

+0

@ Дивакар Хорошо, спасибо. – d0rmLife

ответ

1
differences = [array[index+1]-array[index] for index in range(len(array))-1] 

Это "список понимание", один из мощных возможностей Python. Они более полезны, когда они имеют дело с элементами списка напрямую, а не с индексом, но этот пример близок к вашему исходному коду.

+0

Очень приятно, спасибо. Все еще изучает все эффективные типы ввода, которые предоставляет Python. – d0rmLife

+0

Возможно, вы захотите подождать 15 минут или около того, чтобы посмотреть, что подарят другие. Когда у вас есть любимый, не забудьте «принять» его, поэтому вопрос уходит должным образом. – Prune

3

Если вы используете Numpy, определенно используйте np.diff. Метод понимания массива, в то время как элегантный и pythonic (для массивов python) слишком медленный для крупномасштабных наборов данных.

В общем, правило с Numpy является: «Если это полезно, или кто-то еще хотел бы это, это, вероятно, в Numpy»

Смежные вопросы