Python - Удалить строку из массива NumPy? - PullRequest
1 голос
/ 18 февраля 2011

Привет, все, чего я не хочу, должно быть действительно простым для кого-то здесь .. Я хочу удалить строку из массива с пустым фрагментом в цикле, подобном:

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]

Я получаю следующую ошибку:

ile "bin / dmtools", строка 201, в plot_gride self.calculate_Outliers () Файл "bin / dmtools", строка 188, в execute_Outliers self.workingData = self.wData [calcWeight (self.wData)> self.cutoffOutliers] ValueError: слишком много индексов для массива

1 Ответ

2 голосов
/ 19 февраля 2011

На самом деле в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...