22

私は純粋なPythonの隣接する要素間の差を計算するアルゴリズムを持っています:

    a = range(1000000) #it's numpy array in my case
    prev = a[0]
    b = [0, ]
    for i in a[1:]:
        b.append(i - prev)
        prev = i

この関数をNumpyで書き直す方法はありますか?

4

2 に答える 2

37

方法がありますdiff

a = range(5) # python list of numpy array
np.diff(a)

戻り値

array([1, 1, 1, 1])
于 2012-06-19T07:01:57.583 に答える
1

彼が言ったので

#私の場合はnumpy配列です、

高速なので使用することをお勧めしますa[1:]-a[:-1]

> %%timeit a=np.random.rand(10000)
> a[1:]-a[:-1]
6.94 µs ± 188 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

> %%timeit a=np.random.rand(10000)
> np.diff(a)
15.7 µs ± 247 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
于 2021-05-27T09:27:43.357 に答える