PERF: use arr.size instead of np.prod(arr.shape) in _can_use_numexpr
xref https://github.com/pandas-dev/pandas/pull/39772

Using `np.prod` gives quite some overhead, and I *think* it's always equivalent to `.size` ?

```
In [1]: arr = np.random.randn(3, 2)

In [2]: %timeit arr.size
42.8 ns ± 0.628 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [3]: %timeit np.prod(arr.shape)
6.63 µs ± 344 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
```
> and I think it's always equivalent to .size

AFAIK this is correct

Could grep for this pattern elsewhere?

LGTM Changed a few more (there are other cases, eg in nanops, but where we only have the shape, and not the original array, so that would require more code changes, and thus out of scope for this PR) thanks @jorisvandenbossche 