【发布时间】:2012-06-21 04:37:37
【问题描述】:
我有计算纯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 重写这个函数?
【问题讨论】:
我有计算纯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 重写这个函数?
【问题讨论】:
【讨论】:
np.diff,您可以将其矢量化为 a[1:] - a[:-1]。
diff 也适用于 python 列表。 a[1:] - a[:-1] 仅适用于 numpy 数组。
np.diff 的结果短了一个元素。如果你愿意,你可以在前面加上一个零。
np.diff(a) 可能比a[1:]-a[:-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)
【讨论】: