用于在数组元素中减去的循环

时间:2012-05-29 18:51:04

标签: python for-loop numpy

我是使用Python和Numpy的新手。 我认为这很简单,可能就是这样。 我有很多次 例如:

times = (0.5,  0.75,  1.5)

此数组的大小会因加载的文件而异。

我只是想找出每个后续元素之间的时间差异。

0.75 - 0.5
then
1.5 - 0.75

以及数组中元素的数量。 然后我将每个结果放在一列中。

我尝试了各种for循环,但无法做到。必须有一个简单的方法吗?

谢谢, 斯科特

6 个答案:

答案 0 :(得分:7)

这个怎么样?

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

答案 1 :(得分:4)

首先,请注意,对于大多数日常用途,您可能不需要数组(这是Numpy中的特殊数据类型)。 Python的主要数据存储方式就是列表,如果你来自更严格的编程语言,那么绝对值得一读。列表实际上是使用方括号定义的:

times = [ 0.5,  0.75,  1.5 ]

然后,使用称为列表推导的特殊语法,我们可以创建一个具有(length-1)元素的新列表。此表达式自动计算出所需列表的大小。

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

对于提供的样本数据,返回:

[0.25, 0.75]

答案 2 :(得分: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])]

答案 3 :(得分:1)

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

这种方法不需要简单的Python。减去

times[1:]
(0.75, 1.5)

times[:-1]
(0.5, 0.75)

彼此

答案 4 :(得分: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

答案 5 :(得分: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