Я хотел бы сделать некоторые вероятностные вычисления с scipy.stats
и избежать недопущения / переполнения: в дополнение к использованию соответствующих лог-функций я попытался увеличить точность с плавающей точкой, используя numpy.longdouble
(float128 в Ubuntu).
Тем не менее, пробные функции потерпели неудачу, например:
import numpy as np, scipy.stats as st
x = np.array([0.1, 0.2, 0.5], dtype=np.longdouble)
st.entropy(x)
st.gamma.pdf(x, 2)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-72225ce02b65> in <module>
----> 1 st.entropy(x)
~/.local/lib/python3.5/site-packages/scipy/stats/_distn_infrastructure.py in entropy(pk, qk, base, axis)
2664 pk = 1.0*pk / np.sum(pk, axis=axis, keepdims=True)
2665 if qk is None:
-> 2666 vec = entr(pk)
2667 else:
2668 qk = asarray(qk)
TypeError: ufunc 'entr' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
Есть ли поддержка длинной двойной точности в scipy.stats
? Согласно этой странице документации , это не выглядит так: - (
Подробности и версии
Моя проблема похожа на эта за исключением того, что scipy.linalg.svd
или mpmath.matrix
работают для меня.
версия scipy - 1.4.1, и numpy.show_config()
:
lapack_opt_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
openblas_lapack_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
openblas_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
lapack_mkl_info:
NOT AVAILABLE
blis_info:
NOT AVAILABLE
blas_opt_info:
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
library_dirs = ['/usr/local/lib']
blas_mkl_info:
NOT AVAILABLE