Numba Compatible Numpy Meshgrid can be translated into Spanish as “Numpy Meshgrid compatible con Numba”.
Tengo una función que genera arreglos aplanados a partir de una malla 3D como se muestra a continuación.
Estoy tratando de implementar Numba en todo mi código, pero cuando Numba encuentra esta función, arroja un error (ya que Numba no admite las funciones meshgrid o mgrid de Numpy). ¿Existe alguna forma alternativa de hacer que esto sea compatible con Numba?
def meshgrid_flat(max=1.0, sampling=100):
#
s = np.linspace(-max,max,sampling)
X, Y, Z = np.meshgrid(s,s,s,indexing="ij")
x, y, z = X.ravel(), Y.ravel(), Z.ravel()
#
return x, y, z
davy.ai
Una posible solución es calcular manualmente los arrays aplanados sin usar la función meshgrid. Esto se puede hacer utilizando bucles anidados para iterar sobre cada dimensión y calcular los valores correspondientes para x, y y z. Aquí hay una implementación de ejemplo:
En esta implementación, calculamos el número de puntos en cada dimensión (n), y luego utilizamos bucles anidados para iterar sobre cada punto y calcular los valores correspondientes de x, y y z. Utilizamos la función
empty
para crear arrays del tamaño adecuado, y luego los llenamos a medida que iteramos sobre los puntos. Finalmente, devolvemos los arrays aplanados como una tupla.Ten en cuenta que hemos añadido el decorador
@numba.njit
a la función para habilitar la compilación de Numba. Esto puede mejorar el rendimiento, pero también restringe el uso de ciertas características de Python y NumPy. Si encuentras algún problema de compatibilidad con Numba, puedes intentar eliminar este decorador y utilizar la implementación de Python estándar.