使用Python将数组中的负值替换为0并将大于1的值替换为1的最快方法是什么?

我有一个列表(或某种类型的数组),其中几乎所有值都在 0 到 1 之间,但我偶尔会有稍微负数或大于 1 的值。

list_values = [-0.01, 0, 0.5, 0.9, 1.0, 1.01]

我想用 0 替换负数,用 1 替换大于 1 的值。

只有 1 个条件,我会这样使用np.where

arr_values = np.where(pd.Series(list_values) < 0, 0, pd.Series(list_values))

要处理多个条件,我可以定义一个函数,然后使用 lambda 函数应用它:

def change_values(value):
    if value < 0:
        return 0
    elif value > 1:
        return 1
    else:
        return value

series_values = pd.Series(list_values).apply(lambda x: change_values(value=x))

有没有更快的方法来实现这一点?

回答

你想使用np.clip

>>> import numpy as np
>>> list_values = [-0.01, 0, 0.5, 0.9, 1.0, 1.01]
>>> arr = np.array(list_values)
>>> np.clip(arr, 0.0, 1.0)
array([0. , 0. , 0.5, 0.9, 1. , 1. ])

如果您可以忽略转换为数组的成本,这可能是最快的方法。对于较大的列表/数组,应该会好得多。

pandas除非您最终想要一个 Pandas 数据结构,否则参与此操作不是可行的方法。


以上是使用Python将数组中的负值替换为0并将大于1的值替换为1的最快方法是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>