2012-05-29 3 views
2

Я новичок, используя Python и Numpy. Я думал, что это будет просто и, вероятно, есть. У меня есть массив раз.
Например:Loop for Subtracting in Array Elements

times = (0.5, 0.75, 1.5) 

Этот массив будет варьироваться в зависимости от размера файлов, загруженных.

Я просто хочу найти разницу во времени между каждым последующим элементом.

0.75 - 0.5 
then 
1.5 - 0.75 

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

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

Спасибо, Скотт

+0

Ну, что * у * вы пробовали? Кстати, это общая проблема. Поиск здесь или в Google. – Marcin

+1

Возможный дубликат [Python - Различия между элементами списка] (http: // stackoverflow.com/questions/2400840/python-difference-between-elements-of-a-list) – Marcin

+0

Также http://stackoverflow.com/questions/5314241/difference-between-consecutive-elements-in-list – Marcin

ответ

6

Как насчет этого?

>>> import numpy as np 
>>> a = np.array([0.5, 0.75, 1.5]) 
>>> np.diff(a) 
array([ 0.25, 0.75]) 
>>> 
1

Или как о них (все варианты на одной и той же теме):

import numpy as np 
a = np.array([0.5, 0.75, 1.5]) 
b = a[1:]-a[:-1] 
print (b) 

или без NumPy:

a=[0.5, 0.75, 1.5] 
a1=a[1:] 
a2=a[:-1] 
b=[ aa-a2[i] for i,aa in enumerate(a1) ] 

или

a=[0.5, 0.75, 1.5] 
c=[x-y for x,y in zip(a[1:],a[:-1])] 
4

Во-первых, обратите внимание, что для большинства повседневных применений вам, вероятно, не потребуется n array (который является специальным типом данных в Numpy). Python Workhorse означает, что хранилище данных является списком, и, безусловно, стоит прочитать, если вы используете более жесткий язык программирования. Списки фактически определены с помощью квадратных скобок:

times = [ 0.5, 0.75, 1.5 ] 

Затем, специальный синтаксис называется список понимание, мы можем создать новый список, который имеет (длина-1) элементов. Это выражение автоматически определяет размер необходимого списка.

diffs = [ times[i] - times[i-1] for i in range(1, len(times)) ] 

И для выборки данных, предоставленных, возвращается:

[0.25, 0.75] 
+0

+1 за то, что он uber-concise. – Dan

1
diffs = [b-a for a, b in zip(times[:-1], times[1:])] 
[0.25, 0.75] 

Такой подход не требует NumPy, просто Python. Вычитание

times[1:] 
(0.75, 1.5) 

times[:-1] 
(0.5, 0.75) 

друг от друга

0

этого следует сделать.

import numpy as np 


times = np.array([0.5,0.75,1.5,2.0]) 
diff_times = np.zeros(len(times)-1,dtype =float) 

for i in range(1,len(times)): 
    diff_times[i-1] = times[i] - times[i-1] 

print diff_times 
0

очень простой:

liste = [1,3,8] 
difference = [] 
for i in range(len(liste)-1): 
    diffs = abs(liste[i] - liste[i+1]) 
    difference.append(diffs) 

print difference