我想要一個具有mpz/mpfr值的numpy數組。因爲我的代碼:numpy數組與mpz/mpfr值
import numpy as np
import gmpy2
A=np.ones((5,5));
print A/gmpy2.mpfr(1);
產生:
RuntimeWarning: invalid value encountered in divide
print A/gmpy2.mpfr(1);
[[1.0 1.0 1.0 1.0 1.0]
[1.0 1.0 1.0 1.0 1.0]
[1.0 1.0 1.0 1.0 1.0]
[1.0 1.0 1.0 1.0 1.0]
[1.0 1.0 1.0 1.0 1.0]]
這是我能理解是轉換gmpy MPFR到NumPy的float64是不可能的。那麼我怎樣才能首先獲得一個具有mpfr值的numpy數組呢?
謝謝。
然後'fractions.Fraction'不是一個特別快的類。我想知道原生Numpy數組和一個'mpfr'數組之間的速度增量,看作'mpfr'是一個相對低級別的C封裝類。 – nneonneo 2013-03-09 07:19:20
@nneonneo我認爲問題不在於操作的速度,而在於Python函數調用涉及到每一個函數調用,而其他numpy dtypes不會發生這種情況。 – Jaime 2013-03-09 07:31:25
是的,有Python函數調用,但對於在C中實現的類,這些調用的開銷可能很小。 'Fraction'是用純Python實現的,所以每次調用都是很多字節碼指令。 – nneonneo 2013-03-09 07:33:50