Python 的numpy包使用總結

2021-10-02 23:18:42 字數 3240 閱讀 2043

python中的numpy包是乙個科學計算包,在進行科學計算時多數情況下都會用到這個包,但是其中的array和mat這兩個函式的區別還是要注意。資料的型別很有可能是程式出現bug的乙個難以發現的原因(自身教訓)

if __name__ == '__main__':

# 一維

two = [1, 3, 5, 2, 3, 2]

two1 = np.array(two)

print(two) # [1, 3, 5, 2, 3, 2] type:list

print(two1) # [1 3 5 2 3 2] type:tuple

print(two1.shape) # (6,)

print(two1.tolist()) # [1, 3, 5, 2, 3, 2] type:list

print(len(two1.tolist())) # 6

two2 = np.mat(two)

print(two2) # [[1 3 5 2 3 2]] type:tuple

print(two2.shape) # (1, 6)

print(two2.tolist()) # [[1, 3, 5, 2, 3, 2]] type:list

print(len(two2.tolist())) # 1

可以看到array和mat還是有所不同的。

所以在使用命令tolist進行對array轉換後可以轉換成原來的樣子,對mat型別轉換後會和原來有所不同。

這裡的區別在1維情況下表現的很明顯。對於下面的多緯情況沒啥差別。

對於多維的list,array和mat基本沒有差別:但是在 * 操作時候是有差別的

# 多維陣列

two = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]

two1 = np.array(two)

print(two)

'''[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]

'''print(two1)

'''[[ 1 2 3 4]

[ 5 6 7 8]

[ 9 10 11 12]

[13 14 15 16]

[17 18 19 20]]

'''print(two1.shape) # (5, 4)

print(two1.tolist())

'''[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]

'''print(len(two1.tolist())) # 5

two2 = np.mat(two)

print(two2)

'''[[ 1 2 3 4]

[ 5 6 7 8]

[ 9 10 11 12]

[13 14 15 16]

[17 18 19 20]]

'''print(two2.shape) # (5, 4)

print(two2.tolist())

'''[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]

'''print(len(two2.tolist())) # 5

two3=two1.t # 陣列轉置

two4=two2.t # 矩陣轉置

y=two1 * two1 # 陣列相乘:各元素對應相乘

'''[[ 1 4 9 16]

[ 25 36 49 64]

[ 81 100 121 144]

[169 196 225 256]

[289 324 361 400]]

'''#y1 = np.dot(two1, two1) # dot()函式是矩陣乘,而*則表示逐個元素相乘; 5x4 和 5x4 矩陣乘報錯

y1 = np.dot(two1, two1.t) # 可以將two1其轉置 然後矩陣乘

'''[[ 30 70 110 150 190]

[ 70 174 278 382 486]

[ 110 278 446 614 782]

[ 150 382 614 846 1078]

[ 190 486 782 1078 1374]]

'''y4 = two2 * two2.t # 矩陣相乘:等同於 p.dot(two2, two2.t)

'''[[ 30 70 110 150 190]

[ 70 174 278 382 486]

[ 110 278 446 614 782]

[ 150 382 614 846 1078]

[ 190 486 782 1078 1374]]

'''

matrix是array的分支,matrix和array在很多時候都是通用的,你用哪乙個都一樣。但這時候,官方建議大家如果兩個可以通用,那就選擇array,因為array更靈活,速度更快,很多人把二維的array也翻譯成矩陣。

但是matrix的優勢就是相對簡單的運算符號,比如兩個矩陣相乘,就是用符號*,但是array相乘不能這麼用,得用方法.dot()

array的優勢就是不僅僅表示二維,還能表示3、4、5…維,而且在大部分python程式裡,array也是更常用的。

參考部落格: 

x[:,0]就是取矩陣x的所有行的第0列的元素,x[:,1] 就是取所有行的第1列的元素。

x[:,  m:n]即取矩陣x的所有行中的的第m到n-1列資料,含左不含右。

x[0,:]就是取矩陣x的第0行的所有元素,x[1,:]取矩陣x的第一行的所有元素。

print(two1[0,:])

'''[1 2 3 4]

'''print(two2[:,0])

'''[[ 1]

[ 5]

[ 9]

[13]

[17]]

'''

python庫numpy的使用

python在構造機器學習應用程式時,numpy作為乙個重要的函式庫會被經常使用,裡面有便捷的向量和矩陣的計算函式 from numpy import 構造4 4的隨機矩陣 matrix mat random.rand 4,4 矩陣逆矩陣 invmat matrix.i 單位矩陣 matrix ma...

numpy包的安裝

2,配置python環境變數 在電腦的系統屬性的系統變數path中新增python的安裝路徑,如在path中加入 f python34 f python34 scripts 3,使用pip 指令安裝numpy包 3.1 開啟dos命令輸入 pip install numpy 就會自動安裝 時間有點久...

小白 日常 Python安裝Numpy包

anyway,應該也有像我一樣的python小白需要這種step by step的安裝doc。希望能幫助到大家!1.以windows環境下為例,將安裝到本地的numpy 1.11.3 mkl cp27 cp27m win32.whl放到python的scripts資料夾下 2.win r開啟執行介面...