我注意到numpy masked-array mean method返回了不同的类型,而它可能不应该:
import numpy as np
A = np.ma.masked_equal([1,1,0], value=0)
B = np.ma.masked_equal([1,1,1], value=0) # no masked values
type(A.mean())
#numpy.float64
type(B.mean())
#numpy.ma.core.MaskedArray
其他numpy.ma.core.MaskedArray
方法似乎是一致的
有人能解释一下吗?在
更新:如评论所述
C = np.ma.masked_array([1, 1, 1], mask=[False, False, False])
type(C.mean()) == type(A.mean())
# True
B.mask
开头为:np.ma.nomask
是False
。在这是您的
^{pr2}$B
的情况:对于
A
,掩码是一个大小与data
匹配的数组。在B
中,它是一个标量,False
,mean
将其作为特殊情况处理。在我需要再挖掘一点,看看这意味着什么。在
我不确定这是否有帮助;在
np.ndarray
方法和np
函数和np.ma
方法之间存在一些循环引用,这使得很难准确地确定正在使用什么代码。它就像是在使用已编译的mean
方法,但它是如何处理屏蔽的并不明显。在我不知道是不是想用
而且
super
方法fetch不是正确的方法。在在任何情况下,同一个数组,但是有一个向量掩码,返回标量。在
=================
在没有
nomask
快捷方式的情况下尝试此方法,将在之后引发错误self.count
在nomask
的情况下返回一个标量,而在常规掩码中返回一个np.int32
。所以cnt.shape
阻塞了。在trace
是唯一一个尝试此super(MaskedArray...)
“快捷方式”的掩码方法。很明显,这些代码有点混乱。在====
相关错误问题:https://github.com/numpy/numpy/issues/5769
根据这一点,去年在这里提出了同样的问题:Testing equivalence of means of Numpy MaskedArray instances raises attribute error
看起来有很多掩蔽问题,不仅仅是
mean
。现在或不久的将来,开发主控中可能会有修复程序。在相关问题 更多 >
编程相关推荐