資料分析第一步 NumPy學習筆記

2021-09-14 06:24:45 字數 2928 閱讀 9432

本篇文章主要借鑑《利用python進行資料分析》一書,文中很多例子是博主自己舉例,基本都沒有給出答案,有想要學習的同學可以自己把**敲出來然後執行,檢視結果,實踐是程式設計學習的第一步啦~

1.為什麼我們要學numpy:numpy是numerical python的簡稱,是python進行數值計算所必須要使用到的,它本身並不提供科學函式,只是提供了簡潔易用的c語言api,將資料傳遞給外部類庫,再將計算結果按照陣列的方式返回(陣列理解與c語言相同)。

2.安裝:pip install numpy

3.匯入:import numpy as np(這裡是將numpy匯入並命名為np,在之後操作中更簡便)

1.ndarray是numpy最核心部分——n維陣列物件,它是乙個通用的多維同類資料容器,即每乙個ndarray物件裡包含的每乙個元素一定是同乙個型別。

2.生成ndarray物件,最簡單的是用array函式,array函式可以接收任意的序列型物件:

data1=[1,2,3.4]

a=np.array(data1)

如果是巢狀序列,即包含了列表的列表,可以轉換為多維陣列:

data2=[[1,2],[4,5]]

a=np.array(data2)

要注意的是這裡,只有當第乙個內嵌序列和第二個內嵌序列同尺寸的時候才能生成多維陣列的形式,如果不等長則會分別顯示成list形式。可以用shape屬性檢視陣列物件的長度,用dtype檢視物件型別:

a.shape

a.dtype

3.此外,ndarray還提供了其他函式來建立陣列:zeros建立全0陣列,ones建立全1陣列,random.randn建立隨機數陣列,arange函式會從0開始依次建立自然數陣列

np.zeros([2,3])

np.ones(10)

np.random.randn(2,3)或者np.random.random([2,3])

np.arange(10)

4.numpy的資料型別:int8,int16,int32,int64,float16,float32,float64,float128,complex64,complex128,complex256,bool,object,string_,unicode_

不同型別之間可以用astype函式相互轉換:

arr=np.array([1.2,2.3,3.4])

arr1=arr.astype(np.int32)

arr2=arr.astype(np.complex64)

如果精度高的轉換為精度低的,則會去掉高精度部分,例如arr1,結果為array([1, 2, 3])

5.numpy陣列的算術運算是逐元素的,一旦進行操作,會對陣列裡每個元素都操作arr*3,arr*arr,arr-arr(得到全0陣列)等算術運算操作都可以

如果將同尺寸陣列之間比較,則會產生乙個布林值陣列:arr1>arrr2,返回的都是布林型別

6.numpy陣列可以通過索引找到某個特定的值:

arr=np.arange(10)

arr[3]

得到的結果是3,陣列從0開始分配,也從0開始索引

還可以通過切片得到陣列的某些值:arr[5:8],得到array([5, 6, 7])

如果對切片進行重新賦值操作,原來的陣列也會跟著改變,這是因為numpy的陣列切片並不是原陣列的複製,而是直接原陣列的檢視,如果要進行複製,一定要顯示地寫成:arr2=arr[5:8].copy()

7.布林索引:用布林值代替具體位置進行索引,只有當為true的時候才顯示檢視

name=np.array(['a','b','c','d','a'])

arr=np.arange(15).reshape(5,3)

arr[name=='a']

也可以用取反操作,獲取相反的結果:arr[~(name=='a')]

如果需要將多個布林條件聯合,需要用到&和|,此時and和or不可用:arr[(name=='a')|(name=='b')]

8.負索引:負索引從-1開始:

arr[[-2,-4]]  挑選出特定序列,即倒數第2行和倒數第4行

arr[-4:-2]   挑選出連續序列,此時顯示的是倒數第3行和倒數第2行

9.陣列的轉置和換軸,這個博主講的非常好,畫的圖也直觀形象,推薦給大家:

1.一元通用函式:sqrt-開方函式,exp-指數函式(預設底數為e)

a=np.arange(10)

np.sqrt(a)

np.exp(a)

2.二元通用函式:add-加法,maximum-取最大值,minimum-取最小值

x=np.random.randn(8)

y=np.random.randn(8)

np.add(x,y)

np.maximum(x,y)

np.minimum(x,y)

3.返回多陣列函式:modf返回浮點值的小數和整數部分

arr=np.random.randn(15)

remainder,whole=np.modf(arr)

1.where函式,where(條件,為真時的結果,為假時的結果)

x=np.random.randn(8)

y=np.random.randn(8)

result=np.where(y>0,x,0)

2.線性代數:dot函式

x=np.arange(6).reshape(2,3)

y=np.arange(6).reshape(3,2)

x.dot(y)或者np.dot(x,y)

學習第一步

開始 系統 命令提示符 win r鍵 輸入cmd開啟控制台 碟符切換 檢視當前目錄下的所有檔案 dir 切換目錄 cd change directory 跨碟符 cd d cd.清理螢幕 cls clear screen 退出終端 exit 檢視電腦的ip ipconfig 開啟應用 calc 計算...

學習計畫第一步

c 是靜態 強型別語言。而在很多情況下,提供 動態 行為,是常常發生的事情,例如通過反射在執行時訪問.net型別 呼叫 動態語言物件 訪問com物件等,都無法以靜態型別來獲取。因此,c 4.0引入的又乙個全新的關鍵字dynamic,也同時引入了改善靜態型別與動態物件的互動能力,這就是動態查詢 dyn...

Hibernate學習第一步

今天我在網上查的hibernate學習的基礎的第乙個簡單例子。實體類 如下 package domain public class news public void setuserid integer userid public string getusername public void setu...