我的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]]
表示scores
的m
最近邻居的均值和总和。如果它可以处理第一个和最后一个m索引,那将是一个好处。使用x
作为一个numpy数组,我应该能够使用类似于
scores[x > threshold]
获得所有超过特定阈值的分数。想法是,如果超过该特定阈值,则将scores [i]
称为离群值。
问题来源:stackoverflow
您可以使用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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。