Numexpr seems to sit in a sort of odd niche of having to do relatively simple arithmetic on in-core matrix data fast. For anything more complex, Polars seems more powerful and yet easier to understand, Numba and Taichi are both much more flexible in that they can be used to implement much more complex arithmetic (at the cost of writing lower level python code).
Numexpr basically evaluates raw strings, which makes any sort of heavy usage basically immune to linting, code inspection and refactoring.
Pandas has the eval() method on the Dataframe that uses numexpr as backend, but we generally never use it because of the upper mentioned maintenance issues and the availability of better alternatives.
numexpr speeds up different kinds of usage than numba does. numba is best at speeding up non-vectorizable usage of numpy like repeated operations on arrays inside of for-loops. numexpr speeds up regular numpy expressions, like `5 * x + 7` where x is an array, by avoiding intermediate allocations. It calculates the entire expression for each cell, rather than doing each individual operation into intermediate arrays. It uses strings for expressing calculation so that Python will not break down the expression and hand it off to numexpr one operator at a time like it does with numpy.
Polars is able to lazy evaluate query plans without any unnecessary intermediate allocations, if I want to do algebra on dataframes, I'd use polars.
The narrow usecase seems to be that you have large matrices such that memory efficiency is a concern, but not so large that they don't fit into memory at all.
My point was that this seems like a very narrow niche to me, where I'd still rather use numba or taichi purely because I don't have to evaluate raw strings and can still rely on linters.
You're right that it has trade-offs, like challenges with linting. But many practitioners in these domains are experts in the area of science or engineering involved, not in software development. The ease of adapting an existing script is a big deal for many of them. Many don't even know what a linter is, and numexpr predates (by several years) the high quality linters like ruff that so many of us rely on today.