如何强积金的阵列?(How to mpf an array?)

2019-07-04 15:29发布

我有:

import numpy as np
from mpmath import *

mpf(np.array(range(0,600)))

但它不会让我这样做:

TypeError: cannot create mpf from array

所以,我应该怎么做?

基本上我将不得不使用这个数组和乘元素方面具有根据环境令人难以置信的大或小的惊人数量(例如1.35626567e10846.2345252e-2732 ),因此需要强积金。

更具体地说我将使用BESSELI并创造令人难以置信的大,令人难以置信的小巧值BESSELK功能。

我如何获得一个强积金数组来保存这些数字?

Answer 1:

由强积金数量只是工作乘以一个数组:

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

乘法含强积金数字也适用逐元素的两个数组:

result * result

所以你真正的问题是如何在numpy的阵列评估的mpmath功能。 要做到这一点,我会使用np.frompyfunc (前一段时间,这是唯一的选择)。

besseli_vec = np.frompyfunc(mp.besseli, 2, 1)
besseli_vec(0, A)


Answer 2:

退房mpmath.arange

import numpy as np
import mpmath as mp

np.array(mp.arange(600))


文章来源: How to mpf an array?