一.改變陣列形態
reshape()——通過改變陣列的維度改變陣列形態
import numpy as np
Array=np.arange(1,17,1)
Array

Array_1=np.arange(1,17,1).reshape(4,4) #將資料從(16.)變為(4,4)
Array_1

Array_2=np.arange(1,17,1).reshape(4,2,2)#將資料從(16.)變為(4,2,2)
Array_2

展平
flatten()flatten('F')——對陣列進行橫向或縱向展平
Array_1.flatten() #橫向展平

Array_1.flatten('F') #縱向展平

切割
split(陣列,分割軸,axis=0/1)——對陣列進行橫向或縱向切割
Array_a1,Array_b1=np.split(Array_1,2) #axis=0 進行橫向切割
print(Array_a1,'\n\n',Array_b1)

Array_a2,Array_b2=np.split(Array_1,2,axis=1) #axis=0 進行縱向切割
print(Array_a2,'\n\n',Array_b2)

組合
concatenate((陣列1,陣列2,….,陣列3),aixs=0/1)對多個陣列進行橫或縱組合
np.concatenate((Array_1,Array_b1,Array_a1)) #aisx=0 進行橫向組合

np.concatenate((Array_1,Array_b2,Array_a2),axis=1) #aisx=0 進行橫向組合

二.ufunc陣列通用運算規律
四則運算+冪運算
Array_1+Array_1 #加法

Array_1-Array_1 #減法

Array_1*Array_1 #乘法

Array_1/Array_1 #除法

Array_1**2 #冪運算

比較運算
Array_3=Array_1*2
print(Array_1>Array_3,'\n\n',Array_1>=Array_3) #> ,>=

print(Array_1<Array_3,'\n\n',Array_1<=Array_3) #< ,<=

Array_1==1

邏輯運算
NumPY中 all 表示邏輯and,any表示邏輯or
print([[1,2,3]]and[[1,0,2,3]])
np.all([[1,2,3]]==[[1,0,2,3]])

print([[1,2,3]]or[[1,0,2,3]])
np.any([[1,2,3]]==[[1,0,2,3]])

廣播機制
在進行陣列結構不相同的運算時
1.讓所有輸入陣列向最長的陣列看齊,shape(結構)不足的用1補齊
2.輸出陣列shape是輸入陣列shape各軸上的最大值
3.當陣列之間某個軸相同,或一個=1,時可以運算,否則報錯
4.當某個軸長度為1,沿這個軸使用軸上第一個陣列
a=np.array([1,1,1])
b=np.array([[1],[2],[3]])
print(a,'\n\n',b)
a+b


三.亂數
random
NumPy中提供了random模塊可以生成多種型別,概率的亂數
亂數生成
1.random(元素個數)——隨機生成小于1的數
np.random.random(10)

2.rand(軸0,軸1,...軸n)——生成均勻分布的亂數
np.random.rand(2,2)

3.randn(軸0,軸1,...軸n)——生成服從正態分布的亂數
np.random.randn(2,2,2)

4.randint(起始值,終值,size=[軸0,軸1,...軸n])——生成復合范圍內的亂數
np.random.randint(1,5,[2,2,2])

陣列軸的亂數
1.shuffle(陣列)——對軸0隨機排序,并改變陣列
c=np.array([[1,2,3],[4,5,6],[7,8,9]])
c

np.random.shuffle(c)
c

2.permutation(陣列)——對軸0改變,但不改變陣列
c=np.array([[1,2,3],[4,5,6],[7,8,9]])
c

np.random.permutation(c)

亂數種子
seed (int)——定義亂數的種子,得到初始固定的亂數
np.random.seed(10)
np.random.rand(3,3)

np.random.seed(10)
np.random.rand(3,3)

四.統計分析
排序
sort()——改變原陣列,橫向或縱向的直接排序
Array=np.array([[3,2,1],[6,8,9],[10,1,3]])
Array

Array.sort(axis=1) #aixs=1橫向培訓
Array

Array=np.array([[3,2,1],[6,8,9],[10,1,3]])
Array.sort(axis=0) #aixs=1縱向培訓
Array

argsort()——先排序,再排序后輸出下標,不改變陣列
Array=np.array([[3,2,1],[6,8,9],[10,1,3]])
Array.argsort()

lexsort(陣列1,陣列2……陣列n)——多個陣列在同軸上綜合下標排序,不改變陣列
a=np.array([3,2,1])
b=np.array([5,6,4])
c=np.lexsort((a,b))
c

b[c] #輸出b陣列的排序

a[c] #輸出a陣列的排序

去重復
unique()——進行陣列里的去重
a=np.array([1,1,2,3,4,4,5])
print(a,'\n\n',np.unique(a))

重復輸出
repeat(次數,axis=0/1)——將陣列進行橫向或縱向克隆
注意:axis=0會將陣列展平
print(Array)
print('\n',Array.repeat(2),'\n')
print(Array.repeat(2,axis=1))

常用統計函式
——都可以用axis=0或1來調整操作軸向

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/218413.html
標籤:其他
上一篇:學習numyp的矩陣
下一篇:學習numyp的矩陣
