利用Python進行數據處理1——學會使用NumPy

一.學會使用ndarray數組

1.1什麼是ndarray?函數

ndarray是NumPy中的一種多維數組對象,他能夠是一維的、二維的、甚至更多維次。固然建立更多維次的數組並非他的優勢所在,他的優勢在於它有豐富的運算方法,同時他也是另外一個高級Python庫pandas的基礎庫,可是他只能存放同種類型的元素。學習

1. 2建立一個ndarrayspa

第一種建立方式有:直接使用列表建立ndarray,以下:code

#第一種直接經過列表建立
a_list=[0,1,2,3,4]
a_ndarray=np.array(a_list)#建立了一個一維的數組
print(type(a_ndarray))

 

上面建立了一個一維的數組,那麼咱們也能夠建立一個二維、三位的數組對象

來看下面的代碼:blog

c_list=[[0,0],[1,1,1],[2,2]]#這是一個不規則的二維列表
c_ndarray=np.array(c_list)
print(c_ndarray)#輸出數組

輸出爲:[list([0, 0]) list([1, 1, 1]) list([2, 2])]排序

第二種建立方式:建立指定形狀指定初始值的數組ip

當咱們制定的初始值爲0或者1時,咱們能夠使用函數zeros或者ones這兩個函數接受一個元組來表示這個數組的形狀。pandas

代碼以下:  

#建立指定形狀和初始值的ndarray
d_ndarray=np.zeros(3)#指定初始值爲0,初始形狀爲一維長度爲3
print(d_ndarray)

輸出的結果爲:[0. 0. 0.]在這裏咱們的元素類型爲float

e_ndarray=np.ones((3,2))#建立一個數組3行2列
print(e_ndarray)

使用eye函數建立一個N*N的單位矩陣(對角線爲1,其他的爲0)

f_ndarray=np.eye(3,3)#建立3*3的單位矩陣
print(f_ndarray)

 

1.3判斷ndarray的形狀和元素類型

判斷一個ndarray的形狀使用ndarray的shape屬性

e_ndarray=np.ones((3,2))
print(e_ndarray)
print(e_ndarray.shape)#輸出形狀

輸出爲:(3, 2)

判斷一個ndarray的元素類型

e_ndarray=np.ones((3,2))
print(e_ndarray)
print(e_ndarray.dtype)#輸出元素的類型

 輸出爲:float64

 1.4ndarray的運算

相乘:

a_ndarray=np.array([[1,2,3],[4,5,6]])
b_ndarray=np.array([[7,8,9],[10,11,12]])
c_ndarray=a_ndarray*b_ndarray#相乘
print(c_ndarray)

輸出:[[ 7 16 27]
           [40 55 72]]

能夠發現數組相乘是遍歷數組的每個元素進行相乘。

相減:

a_ndarray=np.array([[1,2,3],[4,5,6]])
b_ndarray=np.array([[7,8,9],[10,11,12]])
c_ndarray=a_ndarray-b_ndarray#相減
print(c_ndarray)

輸出:[[-6 -6 -6]
           [-6 -6 -6]]

對應的元素相減

取倒數:

d_ndarray=1/a_ndarray #取倒數
print(d_ndarray)

輸出:[[1.         0.5        0.33333333]
      [0.25       0.2        0.16666667]]

乘方:.

e_ndarray=a_ndarray**2#乘方
print(e_ndarray)

輸出:    [[ 1  4  9]
              [16 25 36]]
1.5ndarray的切片和拷貝
ndarray的切片和list的切片區別:

針對list:

a_list=[1,2,3,4,5]
print(a_list) #第一次輸出
b_list=a_list # 直接賦值
b_list[0]=0
print(a_list)  #第二次輸出

輸出:[1, 2, 3, 4, 5]
   [0, 2, 3, 4, 5]

發現經過直接賦值list,改變其中一個另外一個也會改變。

a_list=[1,2,3,4,5]
print(a_list)#第一次輸出
c_list=a_list[0:len(a_list)] # 使用切片
c_list[0]=0
print(a_list)#第二次輸出

輸出:[1, 2, 3, 4, 5]
           [1, 2, 3, 4, 5]

咱們發現list切片是不會改變原來的元素的,就是完成了一次拷貝將拷貝的list傳給了新的list

針對ndarray的切片:

a_list=[1,2,3,4,5]
a_ndarray=np.array(a_list)
b_ndarray=a_ndarray[0:len(a_list)]
print(a_ndarray)#第一次輸出
b_ndarray[0]=9
print(a_ndarray)#第二次輸出

輸出:[1 2 3 4 5]
   [9 2 3 4 5]

咱們發現ndarray中的切片賦值也是隻是建立了一個新的引用指向原來的對象。

那麼在ndarray中想要拷貝就須要用到copy函數,以下:

a_list=[1,2,3,4,5]
a_ndarray=np.array(a_list)
b_ndarray=a_ndarray.copy()
print(a_ndarray)#第一次輸出
b_ndarray[:]=9
print(a_ndarray)#第二次輸出

輸出:[1 2 3 4 5]
   [1 2 3 4 5]

1.6數組的轉置:

# 數組的轉置
import numpy as np
a_ndarray=np.array([[0,0,0],[1,1,1],[2,2,2]])
print(a_ndarray)
b_ndarray=a_ndarray.T#轉置
print(b_ndarray)

輸出:[[0 0 0]
      [1 1 1]
      [2 2 2]]
           [[0 1 2]
           [0 1 2]
           [0 1 2]]
1.7精確到元素級別的運算函數

常見一元函數(接受一個數組的函數)有:

abs                    取絕對值

sqrt                    開方

square     平方

exp           計算各個元素的指數

log  log10  log2   去對數底數分別爲e、十、2

ceil                      返回大於等於x的最小值

floor                    返回小於等於x的最大值

rint                      將各個元素進行四捨五入獲得最接近的整數

isnan                   返回一個bool型數組表示那些是數組            

sum                     求和

mean                   算術平均數

std  var                標準差  方差

min  max               最值

sort                       排序

常見的二元的函數(接受兩個數組的函數)有:

add                      兩個數組對應元素相加

subtract               第一個數組減去第二個數組

multiply                數組元素相乘

1.8直接將txt文件中的內容轉入到ndarray數組中

使用函數loadtxt能夠將文件中的數據導入ndarray中:

import numpy as np
a_ndaarray=np.loadtxt(r"E:\PythonWork\py學習\test",delimiter=',',encoding='GBK')
print(a_ndaarray)

輸出爲:

同理savetxt函數是將數組存儲到txt文件中

1.9線性代數中的數組(矩陣)運算

diag      返回一個一維數組表示一個矩陣的對角線

T           矩陣轉置

dot        矩陣乘法

trace     計算對角線元素的和

det       計算矩陣的行列式

eig        計算矩陣的特徵向量

相關文章
相關標籤/搜索