轉自 探索數據之美 的 《25、pandas的reshape(1,-1)什麼意思?》
來源:簡書
鏈接 https://www.jianshu.com/p/d9df005636a6
在創建DataFrame的時候常常使用reshape來更改數據的列數和行數。
reshape可以用於numpy庫裏的ndarray和array結構以及pandas庫裏面的DataFrame和Series結構。
源數據
reshape函數
reshape(行,列)可以根據指定的數值將數據轉換爲特定的行數和列數,這個好理解,就是轉換成矩陣。
然而,在實際使用中,特別是在運用函數的時候,系統經常會提示是否需要對數據使用reshape(1,-1)或者reshape(-1,1)進行轉換,那這兩個轉換是什麼意思呢?難道還有-1行的數據?
我們來嘗試一下:
使用reshape(-1,1)
在使用了reshape(-1,1)之後,數據集似乎變成了一列,這樣看起來不明顯,我們把這些數據導出到excel看看:
導出到excel
excel文件裏顯示的
在excel裏直接變成了一列。
那麼reshape(1,-1)呢?也就是直接變成了一行了。
那這個-1在這裏要怎麼理解呢?
跟進numpy庫官網的介紹,這裏的-1被理解爲unspecified value,意思是未指定爲給定的。如果我只需要特定的行數,列數多少我無所謂,我只需要指定行數,那麼列數直接用-1代替就行了,計算機幫我們算贏有多少列,反之亦然。
所以-1在這裏應該可以理解爲一個正整數通配符,它代替任何整數。
我們拿剛纔的數據來試試看:
指定一個值爲-1時的數據
由上圖可知,指定爲-1的時候,其行或列會隨機分配一個數據。