Можно вычислить среднее значение массива numpy в нескольких измерениях, как, например. my_ndarray.mean(axis=(1,2))
.Усреднение массива с маской размером в несколько измерений
Однако, это не похоже на работу с замаскированного массива:
>>> import numpy as np
>>> a = np.random.randint(0, 10, (2, 2, 2))
>>> a
array([[[0, 9],
[2, 5]],
[[8, 6],
[0, 7]]])
>>> a.mean(axis=(1, 2))
array([ 4. , 5.25])
>>> ma = np.ma.array(a, mask=(a < 5))
>>> ma.mean(axis=(1, 2))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/numpy/ma/core.py", line 5066, in mean
cnt = self.count(axis=axis)
File "/usr/lib/python2.7/site-packages/numpy/ma/core.py", line 4280, in count
n1 = np.size(m, axis)
File "/usr/lib/python2.7/site-packages/numpy/core/fromnumeric.py", line 2700, in size
return a.shape[axis]
TypeError: tuple indices must be integers, not tuple
Как я могу вычислить среднее замаскированного массива по множественным оси, предпочтительно так просто, как это было бы для нормального массив?
(я предпочел бы использовать решение, которое не подразумевает определение новой функции, как это было предложено в this answer.)
Вы пробовали 'ma.mean (2) .mean (1)'? – wflynny
@wflynny: Этот ответ должен работать. В случае, если он хочет только вычислить среднее значение «не-маскированных значений». – fuuman
Для получения дополнительной информации о том, что индексирование кортежа не выполняется, см. [Этот вопрос] (http://stackoverflow.com/questions/30209624/numpy-mean-used-with-a-tuple-as-axis-argument-not-working -with-a-masked-arr) тоже. – mtzl