Как преобразовать строку в Ufunc?

Я пытаюсь написать простую функцию, которая преобразует ввод, написанный в LaTeX, в ufunc, который может быть прочитан numpy. Пока что я тестирую функцию путем преобразования \sin(x) в np.sin(x) (игнорируя преобразование из {} в (). Я не очень хорошо знаком с ufuncs, поэтому постоянно сталкиваюсь с ошибкой при попытке преобразовать строку \sin(x) в np.sin(x) ufunc для любого данного x.

import numpy as np

latexEq = input()

def latexMap(latexEq):
    if "\sin" in latexEq:
        sinLatex = latexEq.replace("\sin", "np.sin")
    else:
        pass
    return sinLatex

npOutput = np.ufunc(latexMap(latexEq))
print(f"f(x) = {numpyOutput}")

Подобно тому, как целое число может быть преобразовано в строку str(2), я попытался заключить оба sinLatex, latexEq, "np.sin" и npOutput, но я всегда получаю сообщение об ошибке:

TypeError: cannot create 'numpy.ufunc' instances

Любое объяснение будет оценено.

🤔 А знаете ли вы, что...
С Python можно создавать роботов и автоматизированные системы с использованием библиотеки Raspberry Pi.


1
58
1

Ответ:

Решено

Итак, если у вас есть просто npOutput = "np.sin" (без (x)), вы можете сделать

# function_name = getattr(module, function_name_string)
npOutput = getattr(np, npOutput.lstrip("np."))

который дает вам функцию np.sin. Скобки должны быть удалены, потому что иначе это будет вызов функции, а не функция.