You can get on the order of 10-30x speedup over NumPy by reducing the allocation of temporaries and fusing across operations. See:
Weld: A Common Runtime for High Performance Data Analytics
https://dspace.mit.edu/bitstream/handle/1721.1/137425/cidr_w...