Perfplot поднял "TypeError: bench () получил неожиданный аргумент ключевого слова 'logx'". Как исправить? - PullRequest
0 голосов
/ 16 января 2020

После поиска в SO для numpy смешанного заполнения массива dtype я обнаружил симпатичный тестер производительности заполнения numpy массива perfplot. Когда был опубликован кодовый ответ от Нико Шлёмера, я увидел провал в графике производительности. SI изменил perflot.show(..snippet..) на perflot.bench(..snippet..), как предлагается здесь и получил следующую ошибку:

  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()

1 Ответ

0 голосов
/ 16 января 2020

После погружения в perfplot main.py Я понял, что нет logx' и logy ** kwargs.

Мое решение:

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)' не принимается как ** kwarg в .show() напрямую. И это работает, чтобы оставить его в .bench().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...