2

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

times = (0.5,  0.75,  1.5)

该数组的大小将根据加载的文件而有所不同。

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

0.75 - 0.5
then
1.5 - 0.75

数组中元素的数量也是如此。然后我将每个结果放入一列。

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

谢谢,斯科特

4

6 回答 6

7

这个怎么样?

>>> import numpy as np
>>> a = np.array([0.5,  0.75,  1.5])
>>> np.diff(a)
array([ 0.25,  0.75])
>>> 
于 2012-05-29T18:54:47.350 回答
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]
于 2012-05-29T19:02:53.200 回答
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])]
于 2012-05-29T18:56:51.553 回答
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)

从彼此

于 2012-05-29T19:05:51.393 回答
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
于 2012-05-29T19:35:12.520 回答
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
于 2014-11-13T08:16:04.950 回答