numpy / scipy中的矢量化索引/切片?

时间:2011-07-29 17:52:04

标签: python statistics numpy scipy vectorization

我有一个数组A,我有一个切片索引列表(s,t),我们称之为列表L.

我想找到A [s1:t1]的85%,A [s2:t2] ......

有没有办法在numpy中对这些操作进行矢量化?

ans = []
for (s,t) in L:
   ans.append( numpy.percentile( A[s:t], 85) ); 

看起来很麻烦。

非常感谢!

PS:可以安全地假设s1< s2 .... t1< t2 .....这实际上只是一个滑动窗口百分位问题。

1 个答案:

答案 0 :(得分:1)

鉴于您正在处理非均匀间隔(即切片的大小不同),不,没有办法在单个函数调用中执行numpy。

如果它是一个统一的切片大小,那么你可以使用各种技巧来实现,如@eat评论。

然而,列表理解有什么问题?它完全等同于你上面的循环,但如果你担心的话,它看起来更“干净”。

ans = [numpy.percentile(A[s:t], 85) for s,t in L]