Chronaxis用户手册English
本页目录

chronaxis.core.mean_weights_numpy

源码基线:8904c2f744951857659abd40aaa3535d57faf53c

1"""以独立NumPy运算执行均值权重归一化,不调用标量数值核。"""23import numpy as np4from .types import QualityFlag as Q567def normalized_mean_terms(values, weights, denominator):8    """对有限数值列先除整窗正分母再乘值,返回只读项和质量。910    参数: 同形一维有效值/权重数组及已核实正分母。返回: (ndarray, QualityFlag)。11    异常: 结构或分配错误传播;非有限和非零下溢记质量,不修补结果。12    """13    try:14        if values.ndim != 1 or weights.shape != values.shape or not np.isfinite(denominator) or denominator <= 0:15            raise ValueError('均值需要同形一维输入和有限正分母')16        if np.any(~np.isfinite(values)) or np.any(~np.isfinite(weights)) or np.any(weights <= 0):17            raise ValueError('均值回读需要有限数值和正权重')18        with np.errstate(over='ignore', under='ignore', invalid='ignore'):19            terms = np.multiply(values, weights / denominator)20        quality = Q.NONE21        if np.any(~np.isfinite(terms)):22            quality |= Q.NONFINITE23        if np.any((terms == 0) & (values != 0)):24            quality |= Q.PRECISION_LOSS25        terms.setflags(write=False)26        return terms, quality27    finally:28        # 保留原异常,断开本帧借用列,避免调用方保存traceback时延长其生命周期。29        values = weights = terms = None30
Chronaxis 用户手册 · 离线阅读