Python - 从numpy数组中删除一行?

1 投票
1 回答
2892 浏览
提问于 2025-04-16 12:05

大家好,我想要做的事情对这里的某些人来说应该很简单。我想在一个循环中从一个numpy数组中删除一行,像这样:

for i in range(len(self.Finalweight)):
        if self.Finalweight[i] >= self.cutoffOutliers:
            "remove line[i from self.wData"

我正在尝试从一个数据集中去除异常值。我的完整代码的方法是这样的:

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]

但是我遇到了以下错误:

文件 "bin/dmtools",第201行,在plot_gride中 self.calculate_Outliers() 文件 "bin/dmtools",第188行,在calculate_Outliers中 self.workingData= self.wData[calcWeight(self.wData)>self.cutoffOutliers] ValueError: 数组的索引太多了

1 个回答

2

其实在NumPy中有一个专门用来处理异常值和无效数据点的工具:掩码数组。下面是链接页面中的一个例子:

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

撰写回答