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