NumPy/Scipy 中的向量化索引/切片?
我有一个数组A,还有一组切片的索引(s,t),我们把这个列表叫做L。
我想找出A[s1:t1], A[s2:t2]等这些切片的85百分位数。
有没有办法在numpy中把这些操作变得简单一些?
ans = []
for (s,t) in L:
ans.append( numpy.percentile( A[s:t], 85) );
看起来有点麻烦。
非常感谢!
附注:可以假设s1 < s2,t1 < t2……这其实就是一个滑动窗口的百分位数问题。
1 个回答
1
因为你在处理的是不均匀的区间(也就是说,切片的大小不一样),所以不,没办法让numpy通过一个函数调用来完成这个。
如果是均匀的切片大小,那就可以用一些技巧来实现,就像@eat评论的那样。
不过,使用列表推导式有什么问题呢?它和你上面的循环是完全一样的,只是看起来“更干净”,如果你在担心这个的话。
ans = [numpy.percentile(A[s:t], 85) for s,t in L]