首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Numpy蒙面作业

Numpy蒙面作业
EN

Stack Overflow用户
提问于 2015-11-07 05:36:43
回答 2查看 1.3K关注 0票数 3

我是一个新的python用户,对深入了解NumPy模块的工作原理非常感兴趣。我正在编写一个函数,它可以同时使用蒙面数组和未屏蔽数组作为数据输入。我注意到有几个矮胖蒙面作业看起来很相似(甚至可以工作?)与正常的(未蒙面的)对应物。其中一个函数是numpy.zerosnumpy.ma.zeros。其他人能告诉我,比如说,使用numpy.ma.zerosnumpy.zeros创建数组的优势吗?当您使用蒙面数组时,它会产生实际的不同吗?我已经注意到,当我使用numpy.zeros_like时,它可以很好地创建一个蒙面数组或非蒙面数组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 5
EN

Stack Overflow用户

发布于 2015-11-07 06:54:38

作为初学者,不要太沉迷于蒙面数组。它是np.ndarray的一个子类,它在处理数据时很有用,这些数据有一些坏值,在计算平均值时您希望忽略这些值。但是,否则,您应该关注使用numpy类创建和索引(和计算)。

ma数组不仅是一个子类,它还包含两个常规数组。一个有数据,包括任何“坏”的值。这是一个常规的numpy数组。另一个是布尔数组,掩码。蒙面类的开发人员试图让它以与常规数组相同的方式运行,但是增加了掩蔽。大多数(如果不是全部)蒙面数组的新增特性都是用Python代码实现的。

很难理解numpy的底层C代码,但是看看用Python实现的函数和方法是有指导意义的。我经常在ipython会话中查看这些内容,但它们也可以在numpy github存储库上进行研究。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33579522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档