Applying numpy functions on .values ranges from 20x faster than pandas functions to similar timing
I've made a simple 10'000 row Series of random floats and run some numpy vs pandas functions on it. The timings are given below (using the Ipython console):

```
import pandas as pd
import numpy as np

randSeries = pd.Series( data=np.random.ranf( 10000 ) )

# Min
%timeit randSeries.min( skipna=False )
# 74.2 us
%timeit randSeries.values.min()
# 5.6 us
%timeit randSeries.to_numpy().min()
# 9.2 us
%timeit randSeries.min()
# 99.6 us
%timeit np.nanmin( randSeries.values )
# 11.8 us
%timeit np.nanmin( randSeries.to_numpy() )
# 15.7 us

# Mean
# NB: .mean has an optimized cython implementation
%timeit randSeries.mean( skipna=False )
# 90.1 us
%timeit randSeries.values.mean()
# 8.6 us
%timeit randSeries.to_numpy().mean()
# 12.5 us
%timeit randSeries.mean()
# 37.6 us
%timeit np.nanmean( randSeries.values )
# 43.5 us
%timeit np.nanmean( randSeries.to_numpy() )
# 48.3 us

# Median
%timeit randSeries.median( skipna=False )
# 253 us
%timeit np.median( randSeries.values )
# 113 us
%timeit np.median( randSeries.to_numpy() )
# 119 us
%timeit randSeries.median()
# 110 us
%timeit np.nanmedian( randSeries.values )
# 124 us
%timeit np.nanmedian( randSeries.to_numpy() )
# 131 us

# Isnan
%timeit randSeries.isna()
# 64 us
%timeit np.isnan( randSeries.values )
# 3 us
%timeit np.isnan( randSeries.to_numpy() )
# 6.6 us

```

My conclusion is that if I know that the Series contains numerical values, I'd better use numpy functions, especially if I know there are no NaNs. It would always be much faster or similar to pandas ones. Also, `.to_numpy` gives a small overhead, which becomes significant for very fast operations.

The question is then: could that choice be done internally in pandas?

#### Output of ``pd.show_versions()``

<details>

[paste the output of ``pd.show_versions()`` here below this line]

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en
LOCALE: None.None

pandas: 0.24.1
pytest: 3.5.0
pip: 9.0.3
setuptools: 39.0.1
Cython: 0.28.1
numpy: 1.16.1
scipy: 1.2.1
pyarrow: 0.9.0
xarray: 0.10.2
IPython: 6.2.1
sphinx: 1.7.2
patsy: 0.5.0
dateutil: 2.7.2
pytz: 2018.3
blosc: 1.5.1
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.4
feather: 0.4.0
matplotlib: 2.2.2
openpyxl: None
xlrd: 1.1.0
xlwt: None
xlsxwriter: 1.0.2
lxml.etree: 4.2.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.5
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: 0.1.4
pandas_gbq: None
pandas_datareader: None
gcsfs: None
</details>

NB: my version of numpy is provided here https://www.lfd.uci.edu/~gohlke/ and includes the MKL library