大家好,我在这里对某些人来说应该是非常简单的...我想在一个循环中从一个numpy数组中删除一行,如:
for i in range(len(self.Finalweight)):
if self.Finalweight[i] >= self.cutoffOutliers:
"remove line[i from self.wData"
我正在尝试从数据集中删除异常值。我的完整代码os方法就像:
def calculate_Outliers(self):
def calcWeight(Value):
pFinal = abs(Value - self.pMed)/ self.pDev_abs_Med
gradFinal = abs(gradient(Value) - self.gradMed) / self.gradDev_abs_Med
return pFinal * gradFinal
self.pMed = median(self.wData[:,self.yColum-1])
self.pDev_abs_Med = median(abs(self.wData[:,self.yColum-1] - self.pMed))
self.gradMed = median(gradient(self.wData[:,self.yColum-1]))
self.gradDev_abs_Med = median(abs(gradient(self.wData[:,self.yColum-1]) - self.gradMed))
self.workingData= self.wData[calcWeight(self.wData)<self.cutoffOutliers]
self.xData = self.workingData[:,self.xColum-1]
self.yData = self.workingData[:,self.yColum-1]
我收到以下错误:
ile“bin / dmtools”,第201行,在plot_gride中 self.calculate_Outliers() 在calculate_Outliers中归档“bin / dmtools”,第188行 self.workingData = self.wData [calcWeight(self.wData)&gt; self.cutoffOutliers] ValueError:数组
的索引太多答案 0 :(得分:2)
NumPy中实际上有一个专门用于屏蔽异常值和无效数据点的工具:masked arrays。链接页面的示例:
x = numpy.array([1, 2, 3, -1, 5])
mx = numpy.ma.masked_array(x, mask=[0, 0, 0, 1, 0])
print mx.mean()
打印
2.75