I like numba, but I found that I often had to rewrite my code (like write out vectorized numpy code). Recently I have mainly been using pythran which IMO is very underrated. It manages to even beat optimized cython code with just a comment in front of the function definition.
I did a comparison to cython and Julia here: https://jochenschroeder.com/blog/articles/DSP_with_Python2/