一.學會使用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 計算矩陣的特徵向量