开发者社区> 问答> 正文

对最近的索引numpy数组进行操作

我的numpy数组scores'和它的m`最近邻居数的示例;

scores = np.random.normal(-0.2,0.01,1000)
m = np.int(np.sqrt(scores.shape[0])+0.5)

我想将“ scores”中的“ i”值与其“ m”最近邻居(索引方式)进行比较。比较应该通过类似于

x[i] = (scores[i]-np.mean(scores[m])) / np.sum(scores[m])

,其中np.mean(scores [m]),np.sum [scores [m]]表示scoresm最近邻居的均值和总和。如果它可以处理第一个和最后一个m索引,那将是一个好处。使用x作为一个numpy数组,我应该能够使用类似于

scores[x > threshold]

获得所有超过特定阈值的分数。想法是,如果超过该特定阈值,则将scores [i]称为离群值。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 19:05:30 430 0
1 条回答
写回答
取消 提交回答
  • 您可以使用scipy.ndimage.uniform_filter解决它:

    Uniform_filter等效于Box模糊(在您的情况下为1维Box过滤器)。

    这是代码:

    import numpy as np
    import scipy.ndimage
    
    #scores = np.random.normal(-0.2,0.01,1000)
    scores = np.array(np.r_[1:30]).astype(float) # Initialize to values 1 to 30 (for testing)
    m = np.int(np.sqrt(scores.shape[0])+0.5) # m = 5
    
    mean_scores = scipy.ndimage.uniform_filter(scores, size=m, mode='reflect', cval=0.0)
    sum_scores = mean_scores * m
    
    x = (scores - mean_scores / sum_scores)
    

    回答来源:stackoverflow

    2020-03-24 19:05:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载