Недавно я установил пакет интеграции Vegas Monte Carlo (версия 3.0.1) на моем компьютере с Windows 10, который использует Python 2.7. Все, казалось, все в порядке, и я могу импортировать вегас. Я скопировал этот код из учебника Вегаса:Ошибка Python vegas
import vegas
import math
def f(x):
dx2 = 0
for d in range(4):
dx2 += (x[d] - 0.5) ** 2
return math.exp(-dx2 * 100.) * 1013.2118364296088
integ = vegas.Integrator([[-1, 1], [0, 1], [0, 1], [0, 1]])
result = integ(f, nitn=10, neval=1000)
print result.summary()
print 'result = %s Q = %.2f' % (result, result.Q)
Запуск этого из блокнота Jupyter, я получаю следующее сообщение об ошибке:
ValueError Traceback (most recent call last)
<ipython-input-1-c50a62cfad78> in <module>()
10 integ = vegas.Integrator([[-1, 1], [0, 1], [0, 1], [0, 1]])
11
---> 12 result = integ(f, nitn=10, neval=1000)
13 print result.summary()
14 print 'result = %s Q = %.2f' % (result, result.Q)
src/vegas/_vegas.pyx in random_batch (src/vegas/_vegas.c:19152)()
src/vegas/_vegas.pyx in vegas._vegas.VegasResult.__init__ (src/vegas/_vegas.c:31214)()
src/vegas/_vegas.pyx in vegas._vegas.RAvg.__init__ (src/vegas/_vegas.c:24657)()
src/gvar/_gvarcore.pyx in gvar._gvarcore.GVarFactory.__call__ (src/gvar/_gvarcore.c:15024)()
src/gvar/_svec_smat.pyx in gvar._svec_smat.smat.append_diag (src/gvar/_svec_smat.c:7055)()
src/gvar/_svec_smat.pyx in gvar._svec_smat.smat.append_diag (src/gvar/_svec_smat.c:6723)()
ValueError: Buffer dtype mismatch, expected 'intp_t' but got 'long'
Я бы признателен за любые советы по устранению неполадок. EDIT: Теперь я понимаю, что проблема связана с пакетом Gvar, который является обязательным пакетом для vegas. Я могу воспроизвести ту же ошибку следующим образом:
import gvar as gv
x = gv.gvar(0, 0.3)
Как и прежде, я после устранения неполадок предложения. Благодарю.
Это маловероятно, но убедитесь, что у вас установлены все зависимости. 'numpy, cython, gvar', установка, вероятно, не сработала бы, если бы эти модули не были обнаружены. Я не могу воспроизвести эту ошибку, так что это единственное предложение, которое у меня есть на данный момент. – JClarke