Я пытаюсь использовать эту функцию:
@jit
def pv (matrix1, matrix2, vec, n):
for i in range (n):
for j in range (n):
matrix1[i,j] = 1 - sum (hypergeom.pmf(X, n, int(vec[i]), int(vec[j])) for X in range(matrix2[i,j]))
, но у меня ошибка утверждения , многое я даже не понимаю (трассировка от numba) и в конце AssertionError: сбой в конвейере объектного режима (шаг: интерфейс объектного режима) . Я подозреваю, что это что-то связано с hyergeom, но я не вижу, где я ошибся
Изменить: в конце концов я не нашел способа реализовать код, работающий с @jit, но я считаю функцию scipy. stats.hypergeom.cdf, который делает это:
sum (hypergeom.pmf(X, n, int(vec[i]), int(vec[j])) for X in range(matrix2[i,j]))
from scipy.stats import hypergeom
hypergeom.cdf(m2[i,j], n, v[i], v[j])
Хотя это решение ускорило код, циклы for по-прежнему очень медленные (при n = 5053 для запуска требуется более получаса)