You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何还原经Power、Reciprocal、Box-Cox等变换后的NumPy数组原始值?

NumPy数组变换的还原方法咨询

我对NumPy数组执行了log、reciprocal、boxcox、sqrt等多种变换,代码如下:

import numpy as np

y_t = np.log(y)
y_t1 = np.sqrt(y)
y_t2 = np.reciprocal(y)
y_t3 = np.power(y,0.1)
......

我已掌握log和sqrt变换的还原方法:

y_t_orig = np.exp(y_t)
y_t1_orig = np.square(y_t1)

请问如何还原Power、Reciprocal、Box-Cox等其他变换后的原始值?


各变换的还原方法

1. Reciprocal(倒数)变换还原

倒数变换本质是 y_t2 = 1/y,直接对变换后的值再次取倒数即可还原原始值:

y_t2_orig = np.reciprocal(y_t2)
# 等价写法
y_t2_orig = 1 / y_t2

2. Power(幂)变换还原

幂变换公式为 y_t3 = y^k(示例中k=0.1),还原时需对变换后的值取 1/k 次幂:

k = 0.1
y_t3_orig = np.power(y_t3, 1/k)
# 等价写法
y_t3_orig = y_t3 ** (1/k)

注意:若k为偶数,需保证变换后的值非负,避免出现复数结果。

3. Box-Cox变换还原

Box-Cox变换分两种情况定义:

当λ≠0时,y_t = (y^λ - 1)/λ
当λ=0时,y_t = ln(y)(与log变换一致,还原用np.exp)

还原时对应两种逻辑:

# 假设变换时已记录lambda值lam和变换结果y_boxcox
if lam != 0:
    y_boxcox_orig = np.power(y_boxcox * lam + 1, 1/lam)
else:
    y_boxcox_orig = np.exp(y_boxcox)

注意:Box-Cox变换要求原始数据y>0,还原后需确保结果符合数据的原始取值范围。

内容的提问来源于stack exchange,提问作者ssuhas76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:40:06