Ошибка в модуле Python Numberxp с оператором 'и' - PullRequest
0 голосов
/ 17 апреля 2019

Я использую модуль Numberxpr для Python. Я пытаюсь запустить следующий фрагмент кода:

import numexpr as ne


def main():
    result = ne.evaluate('where((1 > 9) & (where(1 > 9, 9, 1) == 0), 2, 3)')
    print(f'Result: {result}')


if __name__ == "__main__":
    main()

Но numexpr выдает следующую ошибку:

TypeError: unsupported operand type(s) for &: 'bool' and 'ConstantNode'

Однако, если я извлекаю конфликтующий раздел в отдельном выражении, это работает.

def main():
    intermediate_result = ne.evaluate('where(1 > 9, 9, 1) == 0')
    result = ne.evaluate(f'where((1 > 9) & {intermediate_result}, 2, 3)')
    print(f'Result: {result}')

Но идея в том, чтобы иметь одно выражение. Кто-нибудь знает, как я мог бы переписать эту формулу, чтобы она работала?

Заранее спасибо.

1 Ответ

1 голос
/ 17 апреля 2019

& - побитовый оператор and.Почему бы просто не использовать and?

...