对最近索引numpy数组的操作



我的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]]表示scoresm最近邻居的平均值和和。如果它能够处理第一个和最后一个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)

最新更新