たとえば、次のように、複数の次元にわたって 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
できれば通常の配列と同じくらい簡単に、複数の軸でマスクされた配列の平均を計算するにはどうすればよいですか?
(この回答で提案されているように、新しい関数を定義することを意味しないソリューションを使用したいと思います。)