Nico Schlöme..
14
我也对此感兴趣,并使用perfplot(我的宠物项目)比较了一些建议的解决方案.
numpy.argmin(x)
对于足够大的列表来说,这是最快的方法,即使从输入list到输入的隐式转换也是如此numpy.array.
生成图的代码:
import numpy
import operator
import perfplot
def min_enumerate(a):
return min(enumerate(a), key=lambda x: x[1])[0]
def min_enumerate_itemgetter(a):
min_index, min_value = min(enumerate(a), key=operator.itemgetter(1))
return min_index
def getitem(a):
return min(range(len(a)), key=a.__getitem__)
def np_argmin(a):
return numpy.argmin(a)
perfplot.show(
setup=lambda n: numpy.random.rand(n).tolist(),
kernels=[
min_enumerate,
min_enumerate_itemgetter,
getitem,
np_argmin,
],
n_range=[2**k for k in range(15)],
logx=True,
logy=True,
)