11

私は持っている:

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 が必要になります。

より具体的には、信じられないほど大きな値と信じられないほど小さな値を作成する besseli 関数と besselk 関数を使用します。

これらの数値を保持する mpf 配列を取得するにはどうすればよいですか?

4

2 に答える 2

16

配列に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 数値を含む 2 つの配列を要素単位で乗算することもできます。

result * result

したがって、実際の問題は、numpy 配列で mpmath 関数を評価する方法です。そのために、私は使用しますnp.frompyfunc(少し前まではこれが唯一のオプションでした)。

besseli_vec = np.frompyfunc(mp.besseli, 2, 1)
besseli_vec(0, A)
于 2012-12-06T17:06:54.623 に答える
3

チェックアウトmpmath.arange:

import numpy as np
import mpmath as mp

np.array(mp.arange(600))
于 2012-12-06T13:28:55.783 に答える