2

私は Python と Numpy を使用する初心者です。これは簡単だと思っていましたが、おそらくそうです。私は、時間の配列を持っています。
例えば:

times = (0.5,  0.75,  1.5)

この配列のサイズは、ロードされたファイルによって異なります。

後続の各要素間の時間差を見つけたいだけです。

0.75 - 0.5
then
1.5 - 0.75

配列内の要素の数についても同様です。次に、各結果を 1 つの列に入れます。

さまざまな 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 ]

次に、リスト内包表記と呼ばれる特別な構文を使用して、(長さ-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
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)

互いに

于 2012-05-29T19:05:51.393 に答える
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 に答える
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 に答える