コード例 #1
0
    def nanmean(self, a: BlockArray, axis=None, keepdims=False, dtype=None):
        if not array_utils.is_float(a):
            a = a.astype(np.float64)

        num_summed = self.sum(~a.ufunc("isnan"),
                              axis=axis,
                              dtype=a.dtype,
                              keepdims=keepdims)

        if num_summed.ndim == 0 and num_summed == 0:
            return self.scalar(np.nan)

        if num_summed.ndim > 0:
            num_summed = self.where(
                num_summed == 0,
                self.empty(num_summed.shape, num_summed.block_shape) * np.nan,
                num_summed,
            )

        res = (self.reduce(
            "nansum", a, axis=axis, dtype=dtype, keepdims=keepdims) /
               num_summed)

        if dtype is not None:
            res = res.astype(dtype)
        return res
コード例 #2
0
 def nanvar(self, a: BlockArray, axis=None, ddof=0, keepdims=False, dtype=None):
     mean = self.nanmean(a, axis=axis, keepdims=True)
     ss = self.reduce(
         "nansum", (a - mean) ** self.two, axis=axis, dtype=dtype, keepdims=keepdims
     )
     num_summed = (
         self.sum(~a.ufunc("isnan"), axis=axis, dtype=a.dtype, keepdims=keepdims)
         - ddof
     )
     res = ss / num_summed
     if dtype is not None:
         res = res.astype(dtype)
     return res
コード例 #3
0
 def abs(self, X: BlockArray):
     return X.ufunc("abs")
コード例 #4
0
 def exp(self, X: BlockArray):
     return X.ufunc("exp")
コード例 #5
0
 def log(self, X: BlockArray):
     return X.ufunc("log")
コード例 #6
0
 def sqrt(self, X: BlockArray) -> BlockArray:
     if X.dtype not in (float, np.float32, np.float64):
         X = X.astype(np.float64)
     return X.ufunc("sqrt")