Поддержка float128 (np.longdouble) в scipy.stats - PullRequest
1 голос
/ 12 февраля 2020

Я хотел бы сделать некоторые вероятностные вычисления с 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

1 Ответ

0 голосов
/ 15 февраля 2020

В принципе, нет, нет. Выбор методов указанных c дистрибутивов может работать или не работать, и это не гарантируется.

...