Whatever stack you’re most comfortable in and will allow you to get up and running sooner than later.
I was doing some niche amateur cryptography. I started with numpy, but I needed high performance and support for custom fields (e.g. cyclotomic polynomial rings) so I switched to Julia.
The learning curve was worth the expressiveness and conciseness of the new language. It's important that your code matches the abstraction of your problem domain.