gpt4 book ai didi

python - 如何在 scipy 中找到已弃用函数的替换?

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:18 25 4
gpt4 key购买 nike

例如,根据doc,这个threshold 函数已被弃用。 .

但是,文档没有说明任何替换。是以后就没有了,还是已经有替代品了?如果是,如何找到替换函数?

最佳答案

这需要一些挖掘,但这里是 threshold 的代码(scipy/stats/mstats_basic.py):

def threshold(a, threshmin=None, threshmax=None, newval=0):
a = ma.array(a, copy=True)
mask = np.zeros(a.shape, dtype=bool)
if threshmin is not None:
mask |= (a < threshmin).filled(False)

if threshmax is not None:
mask |= (a > threshmax).filled(False)

a[mask] = newval
return a

但在此之前我发现,我从文档中对其进行了逆向工程:

文档中的示例数组:

In [152]: a = np.array([9, 9, 6, 3, 1, 6, 1, 0, 0, 8])
In [153]: stats.threshold(a, threshmin=2, threshmax=8, newval=-1)
/usr/local/bin/ipython3:1: DeprecationWarning: `threshold` is deprecated!
stats.threshold is deprecated in scipy 0.17.0
#!/usr/bin/python3
Out[153]: array([-1, -1, 6, 3, -1, 6, -1, -1, -1, 8])

建议的替换

In [154]: np.clip(a,2,8)
Out[154]: array([8, 8, 6, 3, 2, 6, 2, 2, 2, 8])
....

剪裁到最大值或最小值是有意义的;另一方面,threshold 将所有越界值转换为其他值,例如 0 或 -1。听起来不是很有用。但这并不难实现:

In [156]: mask = (a<2)|(a>8)
In [157]: mask
Out[157]: array([ True, True, False, False, True, False, True, True, True, False], dtype=bool)
In [158]: a1 = a.copy()
In [159]: a1[mask] = -1
In [160]: a1
Out[160]: array([-1, -1, 6, 3, -1, 6, -1, -1, -1, 8])

这与我引用的代码基本相同,不同之处仅在于它如何处理最小值或最大值的 None 情况。

关于python - 如何在 scipy 中找到已弃用函数的替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46046928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com