我有:
import numpy as np
from mpmath import *
mpf(np.array(range(0,600)))
但它不会让我这样做:
TypeError: cannot create mpf from array
那我该怎么办?
基本上我将使用这个数组,并根据环境(例如1.35626567e1084
或6.2345252e-2732
)将元素与一个非常大或难以置信的小数相乘,因此需要mpf。< / p>
更具体地说,我将使用besseli和besselk函数创建令人难以置信的大而且令人难以置信的小值。
我如何获得一个mpf数组来保存这些数字?
答案 0 :(得分:13)
将数组乘以mpf数就可以了:
import numpy as np
import mpmath as mp
small_number = mp.besseli(400, 2) # This is an mpf number
# Note that creating a list using `range` and then converting it
# to an array is not very efficient. Do this instead:
A = np.arange(600)
result = small_number * A # Array of dtype object, ie, it contains mpf numbeers
乘以元素两个包含mpf数的数组也可以工作:
result * result
所以你真正的问题是如何评估numpy数组中的mpmath函数。要做到这一点,我会使用np.frompyfunc
(前一段时间这是唯一的选择)。
besseli_vec = np.frompyfunc(mp.besseli, 2, 1)
besseli_vec(0, A)
答案 1 :(得分:3)
import numpy as np
import mpmath as mp
np.array(mp.arange(600))