NumPy/Scipy 中的向量化索引/切片?

2 投票
1 回答
1206 浏览
提问于 2025-04-16 22:31

我有一个数组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]

撰写回答