Perfplot引发“ TypeError:bench()得到了意外的关键字参数'logx'”。如何解决?

问题描述 投票:0回答:1

在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()
python python-3.x numpy perfplot
1个回答
0
投票

[潜入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()中。

© www.soinside.com 2019 - 2024. All rights reserved.