Well if performance is an issue, and you're already using Jupyter, why not go for the "Ju" part of the name and use Julia? It's pretty much perfect for the job.
Julia has syntax that's pretty similar to Python (replacing significant whitespace with more robust end tags), performance that closes in on C and Fortran, and offers Lisp like metaprogramming capabilities. Also makes access to C, R, Python, and Fortran very easy if you need it, and parallel and distributed programming is easy to implement.
I'm a mathematical modeller who's been using Julia exclusively for a couple of years now (replacing a mix of C++, GNU Octave, and R), for looking at disease spread in metapopulations, gene flow in anthelmintic resistance, and model fitting with MCMC. So far I'm finding it so much easier to write very fiddly algorithms, and my simulations that took days in C++... well they still take days, but they don't take years.