我有一个数组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 .....这实际上只是一个滑动窗口百分位问题。
答案 0 :(得分:1)
鉴于您正在处理非均匀间隔(即切片的大小不同),不,没有办法在单个函数调用中执行numpy。
如果它是一个统一的切片大小,那么你可以使用各种技巧来实现,如@eat评论。
然而,列表理解有什么问题?它完全等同于你上面的循环,但如果你担心的话,它看起来更“干净”。
ans = [numpy.percentile(A[s:t], 85) for s,t in L]