1. 程式人生 > >第三天:numpy庫

第三天:numpy庫

PS:

這個好像是Python2.X版本的使用。

這個課件的numpy的介紹還是太少了,有點凌亂的感覺,要是後面還是要以《利用Python進行資料分析》做numpy和pandas課件筆記比較好。

要學會和掌握,通過實戰,但是至少要懂得numpy的方式。

一、numpy(numeric Python)

1.定義:

高效方便的科學計算工具

2.優勢:

2.1方便處理向量,矩陣

2.2相比於MATLAB免費

3.簡單實用(版本查詢)

import numpy as np

np.version.full_version

 

二、多維陣列(homogeneous multidimensional)

1.一維陣列

a=np.arange(20)

numpy.ndarray

a=a.reshape(4,5)#這個在《利用Python進行資料分析》算是numpy的高階用法

print(a)

a=a.reshape(2,2,5)#2個數組,2和5是2row,5col

print(a)

 

2.簡單要素描繪

檢視維度:

a.ndim

檢視維度大小:

a.shape

檢視全部的元素個數:

a.size

檢視元素型別:

a.dtype

檢視元素站位(bytes):

a.dtype

 

三、建立陣列

1.高維陣列轉換巢狀列表:

raw=[1,2,3,4,5]

a=np.array(raw)

raw=[[0,1,2,3,4],[5,6,7,8,9]]

b=np.array(raw)

 

 

2.0陣列:

d=(4,5)

np.zeros(d)

 

3.1陣列

d=(4,5)

np.ones(d,dtype=int)

4.隨機陣列

生成[0,1)區間的隨機數陣列:

np.random.rand(5)

 

四、陣列操作

1.加減乘除開根(這個的資料處理,必須是兩個陣列的結構要一致,對應的位置進行處理)

2.生成二維隨機陣列

  a=np.arange(20).reshape(4,5)

3.步長生成:arange(起始,終止,步長)

  a=np.arange(2,45,3).reshape(5,3)

4.生成一維陣列

  np.linspace(0,2,9)

五、陣列元素訪問

訪問:

a=np.array([[3.2,1.5],[2.5,4]])

print(a[0][1])

print(a[0,1])

修改:

a[0][1]=值

廣播機制:

1.    b=a

  a修改

  b修改

2. b=a.copy()

  a修改

  b不修改

取矩陣中的指定列:

  a=np.arange(20).reshape(4,5)

  print(a[:,[1,3]])#先行後列,這裡是指所有行,1,3是指第1列和第3列

篩選:

  a[;,2][a[:,0]>5]

查詢指定值:

  loc=np.where(a==值)

  print(loc)

  print(a[loc[0][0],loc[1][0]])

 

 

 

六、陣列操作

1.矩陣轉置

a=np.random.rand(2,4)

a=np.transpose(a)

b=np.random.rand(2,4)

b=np.mat(b)

print(b.T)#轉置

2.矩陣求逆

import numpy.linalg as nlg
a = np.random.rand(2,2)
a = np.mat(a)
print ("a:")
print(a)
ia = nlg.inv(a)
print( "inverse of a:")
print (ia)

print ("a * inv(a)")
print (a * ia)

3.求特徵值和特徵向量

a = np.random.rand(3,3)
eig_value, eig_vector = nlg.eig(a)
print( "eigen value:")
print( eig_value)
print( "eigen vector:")
print(eig_vector)

4.拼接兩個向量

1.column_stack函式

a = np.array((1,2,3))
b = np.array((2,3,4))
print np.column_stack((a,b))

2.vstack,hstack函式

a = np.random.rand(2,2)
b = np.random.rand(2,2)
print( "a:")
print (a)
print ("b:")
print (b)
c = np.hstack([a,b])
d = np.vstack([a,b])
print( "horizontal stacking a and b:")
print( c)
print ("vertical stacking a and b:")
print( d)

七、缺失值

a = np.random.rand(2,2)
a[0, 1] = np.nan
print (np.isnan(a))
[[False True]
[False False]]