Skip to main content
 首页 » 编程设计

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

2025年05月04日10leader

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

看起来很麻烦。

非常感谢!

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

请您参考如下方法:

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

如果它是统一的切片大小,那么您可以使用各种技巧来做到这一点,正如@eat 评论的那样。

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

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