有没有更快的方法来达到相同的结果? [复制]

Posted

技术标签:

【中文标题】有没有更快的方法来达到相同的结果? [复制]【英文标题】:Is there a faster way to achieve the same result? [duplicate] 【发布时间】:2020-02-28 11:25:45 【问题描述】:

我有这个 python 代码:

    for i, num in enumerate(num_arr):
        if num > threshold:
            num_arr[i] = threshold

'num_arr' 是一个用整数填充的简单数组, “阈值”可能从 10 到 100,000 不等。 有没有更快的方法来达到相同的结果?按位运算或类似的东西?

【问题讨论】:

看看np.clipnp.minimum 【参考方案1】:

您可以为此使用.clip(..) [numpy-doc]。例如:

num_arr = num_arr<b>.clip(max=threshold)</b>

例如:

>>> a
array([14, 25,  7, 12,  2])
>>> a.clip(max=10)
array([10, 10,  7, 10,  2])

【讨论】:

是的,它似乎从执行时间缩短了 0.1 秒,这很好。 @DanShorlaKi:对于小型阵列,提升不会那么显着。通常,当您以“批量”方式处理大量数据(如 1'000、10'000+ 等元素的数组)时,numpy/pandas 会得到回报。 我发现这与 np.clip array[array > threshold] = threshold 的执行时间大致相同

以上是关于有没有更快的方法来达到相同的结果? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用相同的语句和结果集运行多个选择查询? [复制]

克隆PHP对象并在克隆上设置protected属性

用SPSS进行非线性回归分析,结果却总显示迭代0次就达到最优解,初始值就是模拟结果,请教高手不知为何?

使用 Oracle SQL Query 获得与使用 JS date.now() 方法相同的结果

查找不在列表 A 但列表 B 中的人员的更快方法 [重复]

分页结果集中的选择子查询或左外连接哪个更快