帶大家讀python數據分析一書(四)

帶大家讀python數據分析一書(四)

寫在開頭

  emmmmm,好像已經好久沒有整這個了,之後我就完全忘記了,直到我現在又打算寫西瓜書的學習筆記的時候纔想起來還有主席給我的這個任務,西瓜書很久沒有看了,但是現在想寫西瓜書的學習筆記好好的梳理一下,現在的自己水平相比於之前肯定有了比較大的提升,相信現在回去能夠把自己之前一些沒有理解的東搞好,重新理解。

  然後爲什麼又繼續寫這個呢,感覺做事還是要有始有終的,不過感覺之前那樣子寫的帶讀這本書太浪費時間了,因爲我現在課程比較忙,時間比較少,所以打算換個方式來寫節省一下時間。

NumPy 基礎:數組和矢量計算

  numpy是一個高性能科學計算和數據分析的基礎包,是本書幾乎所有高級工具的構建基礎。

如果你是python新手並且只是想利用pandas進行一些簡單的數據處理的話你可以跳過這一章。

NumPy的ndarray:一種多維數組對象

  numpy的一個很重要的特點,就是N維數組對象,直白地說就是矩陣,而numpy也就是專門用來操作矩陣的庫,大致就是這個樣子。

  當分別查看對象的shape和dtype的時候,前者你會得到矩陣的形狀而後者你會得到這個矩陣之中存放的數據類型。

創建ndarray

  創建一個ndarray的最好方法自然就是輸入一個列表,一個標量的列表,比如說數組,之類的,他就會轉化爲一個ndarray的類型。

  當然,還有幾個函數可以幫你構建一個ndarray,它們分別是:

  zeros() //輸入一個表示形狀的元組

  arrange() //這個的參數輸入和range的輸入是一樣的,可以有缺省,分別爲(起始數字,終止數字,步長)

  當然啦,書上還列舉了很多的方法,我就不一一講述了,畢竟你有這個功夫聽我講述還不如去看書本來的快、來的好呢。

ndarray的數據類型

  這裏講的數據類型其實就是ndarray裏面數據的類型,而不是指這個對象本身的數據類型,其實在創建ndarray的時候就可以確認它的數據類型了,就是使用dtype這個參數,輸入float64就是雙精浮點數什麼的,具體的內容的話書本中有提供表格。同時ndarray也提供一個函數astype用來轉化數據類型。

在這裏插入圖片描述
在這裏插入圖片描述

數組和標量之間的運算

  這裏其實說的是對ndarray的批量運算,你不必一個個取出來運算,你只需要對整體進行運算,然後整個矩陣就會一起運算,比如一個矩陣乘上一個常數,然後整個矩陣裏面的所有數值都會乘上那個常數,這個就是矢量化計算,而這也是numpy這樣的矢量化計算這麼吃香的原因,這比一個取出來運算的方式不知道快了幾何。

  在這裏作者還提了一個概念叫做廣播:不同大小的數組之間的運算。
  我還是第一次知道這種性質的名字。

基本的索引和切片

  其實矩陣的切片和索引的做法是和數組的是完全一樣的,只要遷移一下就可以使用了。

  而這裏也存在了一個廣播的性質,當你把一個常數賦值給一整段數組的時候,那一段數組中的所有值都會賦值爲那個常數。

布爾類型索引

  什麼叫做布爾類型索引呢?這其實也和廣播的性質有關了,比如這裏有一個ndarray A,然後A中有一堆數值,然後使用下面的命令:

    A < 10
  然後等返回之後你會驚奇的發現,A之中小於10的所以數值都變味了True,而大於等於10的都變爲了False,而可以用這樣的性質進行索檢。

花式索檢

  這種索檢方式其實就是在中括號[]裏面加入了一個數組,然後它就會按照數組的進行索檢。   比如對於矩陣A,我們進行A[[1,2][3]],然後最後的結果是怎樣的呢?我們取出了A的第一第二列和第三行組成的矩陣。

數組置換和軸對換

  置換想必大家都不陌生吧,使用置換有兩種方法,一種使用np.transpose(array),另一種是array.T,就可以了

  也可以使用函數swapaxes,這個函數是進行軸對換,兩個參數分別爲對換的軸。

通用函數:快速的元素及數組函數

  這些通用函數是什麼呢,比如sqrt()的開方函數等,這些都是在np可以使用的。

在這裏插入圖片描述
在這裏插入圖片描述

利用數組進行數據處理

  就是我前面說的矢量化計算方法,一樣的,

將條件邏輯表述爲數組運算

  主要是在使用numpy.where函數了,這是一個三元表達式,x if condition else y ,相當於之前進行布爾索檢的高級版本,主要優勢體現在速度上面。

數學和統計方法

  主要是運用一些sum()、mean()之類的函數,進行統計計算,是非常有用的函數。

在這裏插入圖片描述

我發現後面的實在是太散了,我就總結一下講出來吧,不然挺浪費時間的。

  在講到上訴的統計方法的時候,布爾類型的數值會強制轉化爲數字1(True)和0(False)。

  any()     //判斷數組中是否有True
  all()     //判斷數組中是否全爲True

  numpy還自帶了排序方法,sort(),雖然這裏沒有講的很詳細,但是這個sort方式是可以控制按照那個函數軸進行排序和順序還是升序的。

  unique()    //這個函數還是蠻特殊的,可以把數組裏面重復出現的東西去掉

  numpy也能夠直接讀取和存儲文件,使用save()方法和load()方法,存儲之後的拓展名爲.npy。

  numpy具有線性代數裏面的一些運算,這是很顯然,要使用矩陣這麼可能不涉及線性代數?
在這裏插入圖片描述
  然後關於最後一個的隨機數方式,和模塊random很是相識,也不講了,書本里還有很詳細的例子。
在這裏插入圖片描述

  終於是寫完這一章了,自己看了一下,非常的簡略,自己對寫成這樣子也不是非常的滿意,但是考慮到自己的時間,想想還是就這個樣子吧,如果有問題歡迎聯繫我哦~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章