我的numpy数组scores
及其最近邻居的m
数的一个例子;
scores = np.random.normal(-0.2,0.01,1000)
m = np.int(np.sqrt(scores.shape[0])+0.5)
我想将scores
中的第三个CCD_值与其最近的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]
超过这个特定阈值,则将其称为异常值。
您可以使用scipy.ndimage.uuniform_filter:来解决它
uniform_filter
相当于长方体模糊(在您的情况下为一维长方体过滤器(。
这是代码:
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)