1. 程式人生 > >Python資料處理之(四)numpy基礎運算1

Python資料處理之(四)numpy基礎運算1

一、一維矩陣的基礎運算

下例中 ab是兩個屬性為array也就是矩陣的變數,而且二者都是1行4列的矩陣, 其中b矩陣中的元素分別是從03。 如果我們想要求兩個矩陣之間的減法,你可以嘗試著輸入:a-b,得到的結果是對應元素相減的結果也就是[10 19 28 37],同理元素的相加相乘操作也是一樣的,但是需要注意:python中的xy次方是通過x**y語句實現的。另外,Numpy中具有很多的數學函式工具,比如三角函式等,當我們需要對矩陣中每一項元素進行函式運算時,可以很簡便的呼叫它們。除了函式應用外,在指令碼中對print函式進行一些修改可以進行邏輯判斷,此時由於進行邏輯判斷,返回的是一個bool

型別的矩陣,即對滿足要求的返回True,不滿足的返回False。下述程式執行後得到的結果是[True True True False]。 需要注意的是,如果想要執行是否相等的判斷, 依然需要輸入==而不是= 來完成相應的邏輯判斷。

下述運算均是建立在一維矩陣,即只有一行的矩陣上面的計算。

>>> import numpy as np
>>> a=np.array([10,20,30,40])
>>> b=np.arange(4)
>>> print(a)
[10 20 30 40]
>>> print(b)
[0 1
2 3] >>> print(a-b) [10 19 28 37] >>> print(a+b) [10 21 32 43] >>> print(b**2) [0 1 4 9] >>> print(np.sin(a)) [-0.54402111 0.91294525 -0.98803162 0.74511316] >>> print(b<3) [ True True True False] >>>

二、二維矩陣的基礎運算

構建兩行兩列的矩陣a,b

>>> import
numpy as np >>> a=np.array([[1,1],[0,1]]) >>> print(a) [[1 1] [0 1]] >>> b=np.arange(4).reshape((2,2)) >>> print(b) [[0 1] [2 3]]

此時構造出來的矩陣ab便是22列的,其中reshape操作是對矩陣的形狀進行重構, 其重構的形狀便是括號中給出的數字。 稍顯不同的是,Numpy中的矩陣乘法分為兩種, 其一是前文中的對應元素相乘,其二是標準的矩陣乘法運算(dot),即對應行乘對應列得到相應元素:

>>> c=np.dot(a,b)
>>> print(c)
[[2 4]
 [2 3]]

除此之外還有另外的一種關於dot的表示方法,即:

>>> c=a.dot(b)
>>> print(c)
[[2 4]
 [2 3]]

下面我們將重新定義一個指令碼, 來看看關於 sum(), min(), max()的使用:

>>> import numpy as np
>>> a=np.random.random((2,4))
>>> print(a)
[[0.07010833 0.19889998 0.38917305 0.0794427 ]
 [0.81524484 0.96631118 0.95301291 0.25478591]]

因為是隨機生成數字, 所以你的結果可能會不一樣. 在第二行中對a的操作是令a中生成一個2行4列的矩陣,且每一元素均是來自從0到1的隨機數。 在這個隨機生成的矩陣中,我們可以對元素進行求和以及尋找極值的操作,具體如下:

>>> np.sum(a)
3.7269788971146403
>>> np.min(a)
0.07010832669552214
>>> np.max(a)
0.9663111797693855

對應的便是對矩陣中所有元素進行求和,尋找最小值,尋找最大值的操作。 可以通過print()函式對相應值進行列印檢驗。

如果你需要對行或者列進行查詢運算,就需要在上述程式碼中為 axis 進行賦值。 當axis的值為0的時候,將會以列作為查詢單元, 當axis的值為1的時候,將會以行作為查詢單元。

為了更加清晰,在剛才的例子中我們繼續進行查詢:

>>> print('a=',a)
a= [[0.07010833 0.19889998 0.38917305 0.0794427 ]
 [0.81524484 0.96631118 0.95301291 0.25478591]]
>>> print('sum=',np.sum(a,axis=1))
sum= [0.73762406 2.98935484]
>>> print('sum=',np.sum(a,axis=0))
sum= [0.88535317 1.16521116 1.34218596 0.33422861]
>>> print('sum=',np.min(a,axis=0))
sum= [0.07010833 0.19889998 0.38917305 0.0794427 ]
>>> print('sum=',np.max(a,axis=1))
sum= [0.38917305 0.96631118]