Python 掩模numpy阵列给定轴的计算模式

Python 掩模numpy阵列给定轴的计算模式,python,numpy,scipy,Python,Numpy,Scipy,我想计算numpy数组中列的模式,计算中不包括特定值(0) numpy数组示例: n=np.array([[0,2,1], [0,1,3], [1,2,3]]) >array([[0, 2, 1], [0, 1, 3], [1, 2, 3]]) 为值不等于0的位置创建掩码 m_mask = n != 0 >array([[False, True, True], [False, True, True], [ True, True, True

我想计算numpy数组中列的模式,计算中不包括特定值(0)

numpy数组示例:

n=np.array([[0,2,1], [0,1,3], [1,2,3]])
>array([[0, 2, 1],
   [0, 1, 3],
   [1, 2, 3]])
为值不等于0的位置创建掩码

m_mask = n != 0    
>array([[False,  True,  True],
   [False,  True,  True],
   [ True,  True,  True]])
应用遮罩并计算轴0上的平均值:

from scipy.stats import mode

new_m = np.ma.array(n, mask = m_mask)
m=mode(new_m, axis=0)
m[0]  #access the values not the count
>array([[0, 2, 3]])
似乎scipy.stats.mean可能忽略了屏蔽数组

关于如何实现这一点有什么想法吗?

我认为
np.ma.array(…)
不适合这里。您可以替换您指定的
new\m
行:

new_m=np.where(m_mask,n,np.nan)
scipy.mode(…)
将忽略nan-s)。 输出:

[[1.2.3.]]
我认为
np.ma.array(…)
不适合这里。您可以替换您指定的
new\m
行:

new_m=np.where(m_mask,n,np.nan)
scipy.mode(…)
将忽略nan-s)。 输出:

[[1.2.3.]]