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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章