我想将一个mpmath函数转换为可以在numpy数组上工作的函数。假设我有以下例子

A=np.linspace(0,1,100)
besseli_vec = numpy.frompyfunc(mpmath.besseli, 2, 1)
Y=besseli_vec(0, A)


但是,现在数组A中的值是mpmath类型的mpf。那么,在mpmath中获取函数并将其转换为可以对numpy数组起作用但返回标准float而不是mpmath float的最快/最佳方法是什么?还是只将mpf数组转换为numpy浮点数?函数float()可以转换数字,但不能转换数组。

最佳答案

besseli_vec = numpy.frompyfunc(lambda *a: float(mpmath.besseli(*a)), 2, 1)


应该这样做。 mpmath的计算可能会比lambda慢得多,因此对速度的影响可能仅是浮点转换。

10-07 13:30