有没有办法使numpy.argmin()和min()一样快?

有没有办法使numpy.argmin()和min()一样快?,第1张

有没有办法使numpy.argmin()和min()一样快?
In [1]: import numpy as npIn [2]: a = np.random.rand(3000, 16000)In [3]: %timeit a.min(axis=0)1 loops, best of 3: 421 ms per loopIn [4]: %timeit a.argmin(axis=0)1 loops, best of 3: 1.95 s per loopIn [5]: %timeit a.min(axis=1)1 loops, best of 3: 302 ms per loopIn [6]: %timeit a.argmin(axis=1)1 loops, best of 3: 303 ms per loopIn [7]: %timeit a.T.argmin(axis=1)1 loops, best of 3: 1.78 s per loopIn [8]: %timeit np.asfortranarray(a).argmin(axis=0)1 loops, best of 3: 1.97 s per loopIn [9]: b = np.asfortranarray(a)In [10]: %timeit b.argmin(axis=0)1 loops, best of 3: 329 ms per loop

也许

min
足够聪明,可以按顺序在阵列上执行其工作(因此具有高速缓存局部性),并且
argmin
正在阵列中跳跃(导致大量高速缓存未命中)?

无论如何,如果您

randvals
从一开始就愿意保留为按Fortran顺序排列的数组,则它会更快,尽管将其复制到按Fortran顺序排列并没有帮助。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5673532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存