在SO上搜索numpy数组混合dtype填充后,我发现了一个不错的numpy数组填充性能测试器perfplot
。当NicoSchlömer发布的code answer运行时,我发现性能图表有所下降。我按照建议perflot.show(..snippet..)
将perflot.bench(..snippet..)
更改为here,并收到以下错误:
File "X:\ScriYpts\Z.py", line 40, in <module> xlabel='length(a)' TypeError: bench() got an unexpected keyword argument 'logx'
如何解决?
我的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import perfplot
def fill(n):
a = np.empty(n)
a.fill(val)
return a
def colon(n):
a = np.empty(n)
a[:] = val
return a
def full(n):
return np.full(n, val)
def ones_times(n):
return val * np.ones(n)
def mlist(n):
return np.array(n * [val])
val = 42.0
out = perfplot.bench(
setup=lambda n: n,
kernels=[fill, colon, full, ones_times, mlist],
n_range=[2**k for k in range(20)],
logx=True,
logy=True,
xlabel='length(a)'
)
out.show()
[潜入perfplot main.py
后,我发现没有logx'
和logy
**可用。
我的解决方案:
out = perfplot.bench(
setup=lambda n: n,
kernels=[fill, colon, full, ones_times, mlist],
n_range=[2**k for k in range(20)],
# logx=True, # disabled here
# logy=True, # disabled here
xlabel='length(a)'
)
out.show(logx=True, logy=True) # both "log" **kwargs added here in `show()`
由于某些未知原因,xlabel='length(a)'
不直接在.show()
中被接受为** kwarg。并且可以将其保留在.bench()
中。