Unexpected mutable behavior on DataFrame columns
 
```python
 
>>> import pandas as pd
>>> import numpy as np
>>> table = pd.DataFrame([[1, 1, 2, 2], 
...                      [1, 2, 2, 1], 
...                      [2, 2, 1, 1]], 
...                      index=[1, 2, 3], 
...                      columns=['a', 'b', 'c', 'd'])            
>>> print(table)
   a  b  c  d
1  1  1  2  2
2  1  2  2  1
3  2  2  1  1
columns = list(np.random.permutation(table.columns)) 
print(table)
   b  d  a  c
1  1  1  2  2
2  1  2  2  1
3  2  2  1  1
```
#### Problem description

It seems a little weird to me that a permutation on the table columns would change the original table.
First off, the `numpy.random.permutation` returns a new array and doesn't alter the original input array (proof below)
```
In [10]: x = np.array([1, 2, 5, 3])                                                                                                                                                  

In [11]: np.random.permutation(x)                                                                                                                                                    
Out[11]: array([3, 1, 2, 5])

In [12]: x                                                                                                                                                                           
Out[12]: array([1, 2, 5, 3])

```

Furthermore, even if the `table.columns` were sorted by another operator, I would *hope* that `table.columns` would return a copy of the original table.columns.  Otherwise, this would imply that there are quite a few unexpected side-effects that could occur.
The solution to the above problem for now is to create an explicit copy as follows

```columns = list(np.random.permutation(list(table.columns))) ```

Is this an expected consequence?  If so, this maybe worthwhile having documented somewhere.  Thanks!

#### Expected Output
```
   a  b  c  d
1  1  1  2  2
2  1  2  2  1
3  2  2  1  1
```
#### Output of ``pd.show_versions()``

<details>
In [13]: pd.show_versions()                                                                                                                                                          

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.7.final.0
python-bits: 64
OS: Darwin
OS-release: 17.7.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.23.4
pytest: None
pip: 18.1
setuptools: 40.6.3
Cython: 0.29.2
numpy: 1.15.2
scipy: 1.1.0
pyarrow: None
xarray: None
IPython: 7.2.0
sphinx: None
patsy: 0.5.1
dateutil: 2.7.5
pytz: 2018.9
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 3.0.2
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None

</details>
