2 votes

Pourquoi numba jette-t-il une erreur concernant les méthodes numpy lorsque (nopython=True) ?

J'essaie d'utiliser numba pour améliorer la vitesse d'un code que j'ai écrit et qui est plutôt lent. La majorité du temps passé est dans une seule fonction. J'ai d'abord essayé d'utiliser seulement

@jit 

avant la définition de ma fonction, ce qui a un peu amélioré la synchronisation. Ensuite, j'ai essayé d'utiliser

@jit(nopython=True) 

à la place. D'après ce que j'ai lu dans la documentation, les méthodes numpy que j'utilise dans la fonction devraient être prises en charge (par exemple, la transposition). Cependant, je reçois une erreur

Failed at nopython (nopython frontend)
Untyped global name 'transpose'

3voto

JoshAdel Points 15911

Afin d'utiliser transpose vous devez l'appeler (comme les docs décrire ) sous la forme d'une méthode d'un tableau numpy. Ainsi, ce qui suit fonctionne :

import numpy as np
import numba as nb

@nb.jit(nopython=True)
def func(x):
    y = x.transpose()  # or x.T
    return y

x = np.random.normal(size=(4,4))
x_t = func(x)

Mais appeler y = np.transpose(x) dans la fonction ne le fait pas. Je suppose que c'est ce que vous faites. Remarque : j'utilise Numba 0.25.0 comme référence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X