我是一个新的python用户,对深入了解NumPy模块的工作原理非常感兴趣。我正在编写一个函数,它可以同时使用蒙面数组和未屏蔽数组作为数据输入。我注意到有几个矮胖蒙面作业看起来很相似(甚至可以工作?)与正常的(未蒙面的)对应物。其中一个函数是numpy.zeros和numpy.ma.zeros。其他人能告诉我,比如说,使用numpy.ma.zeros和numpy.zeros创建数组的优势吗?当您使用蒙面数组时,它会产生实际的不同吗?我已经注意到,当我使用numpy.zeros_like时,它可以很好地创建一个蒙面数组或非蒙面数组。
发布于 2015-11-07 06:16:36
np.ma.zeros创建一个蒙面数组,而不是一个普通数组,如果以后对该数组的某些操作创建无效值,则该数组可能很有用。手册中的一个例子:
数组有时包含无效或丢失的数据。在对这些数组执行操作时,我们希望抑制无效的值,这就是满足的目的(下面给出了一个典型的使用示例)。 例如,检查以下数组:X= np.array(2,1,3,np.nan,5,2,3,np.nan) 当我们试图计算数据的平均值时,结果是无法确定的: np.mean(x) nan 平均值是使用粗略的
np.sum(x)/len(x)计算的,但是由于添加到NaN中的任何数字都会生成NaN,所以这是行不通的。输入蒙面数组: M= np.ma.masked_array(x,np.isnan(x)) >>> m masked_array(data = 2.0 1.0 3.0 -- 5.0 2.0 3.0 -,掩码=假真假真,fill_value=1e+20) 在这里,我们构造了一个隐藏数组来抑制所有的NaN值。我们现在可以开始计算其他值的平均值: np.mean(m) 2.6666666666666665
https://stackoverflow.com/questions/33579522
复制相似问题