У меня есть массив значений MxN, взятых из эксперимента.Некоторые из этих значений недействительны и установлены в 0, чтобы указать на это.Я могу создать маску допустимых / недействительных значений, используя
mask = (mat1 == 0) & (mat2 == 0)
, которая создает массив MxN bool.Следует отметить, что замаскированные местоположения не следуют аккуратно за столбцами или строками матрицы - поэтому просто обрезать матрицу не вариант.
Теперь я хочу взять среднее значение вдоль одной оси моего массива (EG в конечном итоге с массивом 1xN), исключая эти недопустимые значения в вычислении среднего.Интуитивно я подумал, что
np.mean(mat1[mask],axis=1)
должен это сделать, но операция mat1[mask]
создает одномерный массив, который выглядит как элементы, для которых mask
истинно - что не помогает, когда я хочу толькоИмеется в виду по одному измерению массива.
Есть ли «питон-esque» или простой способ сделать это?Я полагаю, я мог бы использовать маску для установки маскируемых элементов на NaN
и использовать np.nanmean
- но это все еще кажется неуклюжим.Есть ли способ сделать это «чисто»?