Я пытаюсь выразить большое 1011 * аналитическое выражение с sp.Max (x, 0) внутри. Я хочу использовать numpy для векторизации моих вычислений, поэтому x будет массивом. Мне нужны поэлементные максимальные значения x и 0. Тем не менее, sympy меняет sp.Max на np.amax по умолчанию. Он находит максимум вдоль оси, это не то, что мне нужно. Ключевое слово "modules" в lambdify не работает, как я ожидаю. Я пробовал:
import numpy as np
import sympy as sp
arr = np.array([1, 2, 3])
expr = sp.sin(x) + sp.Max(x, 0)
f = sp.lambdify(x, expr, modules=[{'Max': np.maximum}, 'numpy']) # docs say, priority of modules matters
help(f)
Это дает:
Help on function _lambdifygenerated:
_lambdifygenerated(x)
Created with lambdify. Signature:
func(x)
Expression:
sin(x) + Max(0, x)
Source code:
def _lambdifygenerated(x):
return (sin(x) + amax((0,x)))
Imported modules:
sp. Макс почему-то изменился на amax.
Если 'numpy' не включенный в список «модулей», он просто пропускает все остальные функции. Я также пытался поменять dict и 'numpy' в списке, но это не помогло. Пожалуйста, уточните, что не так? Это ошибка в sympy?