我是使用Python和Numpy的新手。 我认为这很简单,可能就是这样。 我有很多次 例如:
times = (0.5, 0.75, 1.5)
此数组的大小会因加载的文件而异。
我只是想找出每个后续元素之间的时间差异。
0.75 - 0.5
then
1.5 - 0.75
以及数组中元素的数量。 然后我将每个结果放在一列中。
我尝试了各种for循环,但无法做到。必须有一个简单的方法吗?
谢谢, 斯科特
答案 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