Python學習之Numpy速成記——進階篇(下)

Python學習之Numpy速成記——進階篇(下)

常用函數

4.add 上調用通用函數的方法

(1)對於add函數,其對數組的reduce計算結果等價於對數組元素求和。調用

reduce方法:

a = np.arange(9)

print("Reduce", np.add.reduce(a))

(2)accumulate方法同樣可以遞歸作用於輸入數組。但是與reduce方法不同的是,它將存儲運算的中間結果並返回。因此在add函數上調用accumulate方法,等價於直接調用cumsum函數。在add函數上調用accumulate方法:

print("Accumulate", np.add.accumulate(a))

print(np.cumsum(a))

(3)np.sum

np.sum(a, axis=None, dtype=None, out=None, )

axis的取值有三種情況:1.None,2.整數, 3.整數元組。

axis取None,即將數組/矩陣中的元素全部加起來,得到一個和

當axis為0時,是壓縮行,即將每一列的元素相加,將矩陣壓縮為一行

當axis為1時,是壓縮列,即將每一行的元素相加,將矩陣壓縮為一列

np.sum(c)

np.sum(c, axis=0)

np.sum(c, axis=1)

(4)cumprod所有元素的累計積

print(np.cumprod([1,2,3]))

(5)在數組的除法運算中涉及三個通用函數divide、true_divide和floor_division,以及兩個對應的運算符/和//。

· divide函數在整數和浮點數除法中均只保留整數部分

· true_divide函數不作截斷返回浮點數結果

· 而floor_divide函數同樣返回整數結果並等價於先調用divide函數再調用floor函數。

· divide函數在整數和浮點數除法中均只保留整數部分:

a = np.array([2, 6, 5])

b = np.array([1, 2, 3])

print "Divide", np.divide(a, b), np.divide(b, a)

· true_divide函數與數學中的除法定義更為接近,即返回除法的浮點數結果而不作截斷:

print "True Divide", np.true_divide(a, b), np.true_divide(b, a)

· floor_divide函數總是返回整數結果,相當於先調用divide函數再調用floor函數。floor函數將對浮點數進行向下取整並返回整數:

np.floor_divide(b, a) c = 3.14 * b

np.floor_divide(b, c)

· 使用/運算符相當於調用divide函數

· 運算符//對應於floor_divide函數

Python學習之Numpy速成記——進階篇(下)

a = np.array([2, 6, 5])

b = np.array([1, 2, 3])

print(a+b)

print(a*b)

print(np.multiply(a,b))

print(a-b)

print(a/b)

print(a//b)

print("Divide", np.divide(a, b))

print("True Divide", np.true_divide(a, b))

print("floor_divide", np.floor_divide(a, b))

print(abs(-4.5))

print(np.sqrt(4))

print(np.square(4),np.square(a))

5.矩陣

(1)矩陣的乘法運算和NumPy中的普通乘法運算不同。冪運算當然也不一樣。我們可以使用mat、matrix以及bmat函數來創建矩陣。

· 在創建矩陣的專用字符串中,矩陣的行與行之間用分號隔開,行內的元素之間用空格隔開。使用如下的字符串調用mat函數創建矩陣:

A = np.mat('1 2 3; 4 5 6; 7 8 9')

· 用T屬性獲取轉置矩陣

print "transpose A", A.T

· 用I屬性獲取逆矩陣:

print "Inverse A", A.I

· NumPy數組進行創建

np.mat(np.arange(9).reshape(3, 3))

(2)從已有矩陣創建新矩陣:

利用一些已有的較小的矩陣來創建一個新的大矩陣。這可以用bmat函數來實現。這裡的b表示"分塊",bmat即分塊矩陣(block matrix)。

A = np.eye(2)

B = 2 * A

(3)創建複合矩陣

np.bmat("A B; A B")


分享到:


相關文章: