Как вычислить среднее значение столбца массива, используя только положительные записи в Python?

#numpy #average #numpy-ndarray

#numpy #среднее #numpy-ndarray

Вопрос:

 import numpy as np

A = np.random.rand(3,3)
A[1,0] = -666
A[0,1] = -666
A[2,2] = -666
  

У меня есть матрица, все записи которой положительные, за исключением того, что -666 представляет собой пропущенное значение или выброс. Как я могу вычислить среднее значение по столбцу и среднее значение по строке только с положительными записями?

Ответ №1:

Если вы хотите исключить отрицательное значение из подсчета в среднем знаменателе, вы можете использовать numpy.maximum для отсечения отрицательных значений перед суммированием по требуемому измерению / оси и разделить на количество неотрицательных значений вдоль такого измерения / оси:

 np.sum(np.maximum(A, 0), axis=0)/np.sum(A>0, axis=0)
  

С другой стороны, если вы хотите посчитать также отрицательные значения в знаменателе:

 np.mean(A*(A>0), axis=0)
  

Комментарии:

1. Большое вам спасибо! Именно то, что я искал!