【问题标题】:Numpy clip function takes twice as long as expectedNumpy 剪辑功能需要的时间是预期的两倍
【发布时间】:2015-12-06 04:30:50
【问题描述】:

我发现 numpy 剪辑功能的性能明显慢于自己使用蒙版(164us 对 74us 左右)。剪辑功能是否在做一些额外的事情,使其花费两倍的时间?

%timeit growth.clip(-maxg, maxg)
10000 loops, best of 3: 164 µs per loop

%timeit growth[np.greater(growth,maxg)] = maxg
10000 loops, best of 3: 37.1 µs per loop

%timeit growth[np.less(growth,-maxg)] = -maxg
10000 loops, best of 3: 37 µs per loop

重置增长数组并以相反的顺序测试后:

%timeit growth[np.less(growth,-maxg)] = -maxg
10000 loops, best of 3: 36.6 µs per loop

%timeit growth[np.greater(growth,maxg)] = maxg
10000 loops, best of 3: 37.3 µs per loop

%timeit growth.clip(-maxg, maxg)
100 loops, best of 3: 150 µs per loop

请注意,增长是一个相当大的数组:

growth.shape
(12964, 7)

【问题讨论】:

    标签: python numpy clip


    【解决方案1】:

    默认的numpy.clip 返回一个带有剪裁值的新数组。使用参数out=growth 使操作就地:

    growth.clip(-maxg, maxg, out=growth)
    

    这样,clip 所花费的时间与您提到的替代方案更相似。

    【讨论】:

    • 这也从 MemoryError 中保存
    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 2020-06-11
    • 2018-10-12
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多