Please enable JavaScript.
Coggle requires JavaScript to display documents.
import numpy as np (多維陣列運算 a=np.array([1,1],[0,1])和b=np.array([0,1],[2,3])…
import numpy as np
多維陣列運算 a=np.array([1,1],[0,1])和b=np.array([0,1],[2,3])
np.dot(a,b)同等於a.dot(b) #矩陣剩法,詳細請查google
a+b 或a*b或邏輯判別,與一維陣列差不多。
np.random.random((2,4)) #創建一個2行4例的陣列,內容為亂數。
np.sum(a) #對陣列中所有元素進行加總
np.min(a) #尋找陣列所有元素中最小值
np.max() #尋找陣列所有元素中最大值
np.sum(a,axis=1) #對陣列中每一""行""做加總計算
np.min(a,axis=0) # 對陣列中每一""列""取最小值
np.max(a.axis=1) ##對陣列中每一""行""取最大值
創建特定數組
np.array([2,23,4],[2,32,4]) #創鍵2d矩陣 2行3列矩陣
np.zeros((3,4)) #創鍵一個數據全為零的3行4列矩陣
np.ones((3,4)) #創鍵一個數據全為1的3行4列矩陣
np.empty((3,4)) #創鍵一個數據全為接近於0的3行4列矩陣
np.arange(10,20,2) #創建一個數據為10-19的數組且以2為增量。輸出[10,12,16,18]
np.arange(12).reshape((3,4)) #創鍵一個3行四列且數據內容為0-11,輸出[0,1,2,3]換行[4,5,6,7]換行[8,9,10,11]
np.linespace(1,12,12) #創建一個數據為1開始和10結尾且分割成12個數據,輸出[1,2,3,4,5,6,7,8,9,10,11,12]
np.linespace(1,12,12).reshape(3,4) ##創建一個數據為1開始10結尾且分割成12個的3行四列矩陣,輸出[1,2,3,4]換行[5,6,7,8]換行[9,10,11,12]
一維陣列運算 a=np.array([10,20,30,40]) 和b=np.array([1,2,3,4])
a+b --------#輸出array([10, 21, 32, 43])
a*b ------ #輸出 array([ 0, 20, 60, 120])
b**--------#以b的二次方計算,輸出array([0, 1, 4, 9])
10*sin(a)-------#計算a數列三角函數,以sin函數為列輸出 array([-5.44021111, 9.12945251, -9.88031624, 7.4511316 ])
print(b<3)------#對b進行邏輯判斷,返回bool類型,輸出array([ True, True, True, False]
陣列合併 a=np.array([1,1,1])和 b=np.array[2,2,2]
print(np.vstack((a,b))) #垂直合併輸出一個為2行三列的矩陣[1,1,1]換行[2,2,]
print(np.hstack((a,b))) #水平合併輸出一個為1行數組[1,1,1,2,2,]
print(a[np.newaxis,:]) #此時a由一個數組轉變為一個1行3列的矩陣,輸出為[1,1,1]
print(a[:,np.newaxis]) #此時a由一個數組轉變為一個3行一列的矩陣,輸出為[1]換行[1]換行[1]
a=np.array([1,1,1])[:,np.newaxis]和b=np.array([2,2,2])[:,np.newaxis]
np.concatenate((a,b,b,a),axis=1) #用來合併多個數組或矩陣,axis=0為垂直合併,axis=1為水平合併,故此輸出為[1,2,2,1]換行[1,2,2,1]換行[1,2,2,1]
np.array([2,23,4] ) #數組如何指定數據
np.array([2,23,4] ) ,dtype=np.int) #將數組指定為int64
np.array([2,23,4],dtype=np.int32) #將數組指定為int32
np.array([2,23,4],dtype=np.float) #將數組指定為float64
np.array([2,23,4],dtype=np.float32) #將數組指定為float32
np.array([[1,2,3],[3,4,5]]) #創造數組分析
np.array.ndim #分析array的維度
np.array.shape #分析array的行數與列數
np.array.size #分析array有幾個元素
陣列分割a為一個3行4列矩陣[0,1,2,3][4,5,6,7][8,9,10,11]
np.hsplit(a, 2)同等於np.split(a,2,axis) #將a陣列垂直分割為兩個陣列,所以輸出為兩個三行兩列的矩陣,分別為[0,1][4,5][8,9]及[2,3][6,7][10,11]
np.vsplit(a, 3)同等於np.split(a, 3, axis=0)) #將a陣列水平分割為三個陣列,所以輸出為三個1行4列的陣列,分別為[0,1,2,3,]及[4,5,6,7]及[8,9,10,11]
np.array_split(a, 3, axis=1) #不等量分割需用此分式分割,將陣列a垂直分割為三個陣列由於不等量,所以輸出分別為[0,1][4,5][8,9]及[2][6][10]及[3][7][11]
numpy索引
一維索引 a= np.array([3,4,5,6,7,8,9,10,11,12,13,14])
a[3] #輸出值為6
多維索引a= np.array([3,4,5,6]換行[7,8,9,10]換行[11,12,13,14]) #一個3行4列的矩陣
print(a[2]) #輸出]
print(a[2]) #輸出[11,12,13,14]
print(a[0]) #輸出[3,4,5,6]
print(a[1][1]) #取a陣列中的第二行第二列值,輸出8
print(a[1,1])) #輸出結果與a[1][1]相同為8
print(a[1,1:3]) #取陣列第二行第二、三列值,所以輸出為[8,9]
for row in a:換行print(row) #此寫法為輸出每行的值[3,4,5,6]換行[7,8,9,10]換行[11,12,13,14]
for column in a.T: 換行print(column) #此行的寫法為輸出每列的值[3,7,11]換行 [4,8,12]換行[5,9,13]換行[6,10,14]
print(A.flatten()) #輸出[3,4,5,6,7,8,9,10,11,12,13,14]
陣列copy與deep copy假設a=np.array[1,2,3,4]
簡單說明:a=b 換行c=a換行d=b,此時所有的變數會共用同一個a的記憶體,所以只要改變a的值,例如a[0]=11,這樣的情況下,a、b、c、d的輸出都會為[11,2,3,4],具有連動性,如果不想要有這樣的情況就需要使用deep copy,,使用方法為b=a.copy(),此時b的值將不會再與a連動。