深度學習筆記 NumPy陣列

2021-10-02 09:12:44 字數 2249 閱讀 6574

numpy的陣列類(numpy.array)中提供了很多便捷的方法,在實現深度學習時,我們將使用這些方法。

import numpy as np
這條語句就是「將numpy作為np匯入」的意思。通過寫成這樣的形式,之後numpy相關的方法均可通過np來呼叫。

a = np.array([1,2,3])
np.array()接收python列表作為引數,生成numpy陣列。

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

y = np.array([2,4,6])

print("對應元素加法x+y=",x+y)

print("對應元素減法x-y=",x-y)

print("對應元素乘法x*y=",x*y)

print("對應元素除法x/y=",x/y)

對應測試結果:

a = np.array([[1,2],[3,4]]) # 建立二維陣列a

print(a) # 列印二維陣列a

print(a.shape) # 檢視矩陣a的形狀

print(a.dtype) # 檢視矩陣a中元素的資料型別

對應測試結果:

numpy陣列可以生成n維陣列,這裡只展示了二維陣列(矩陣)的生成。

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

b = np.array([10,20])

print(a*10) # 矩陣與標量相乘

print(a*b) # 不同形狀的陣列相乘

對應測試結果:

numpy中,形狀不同的陣列之間也可以進行運算。上述例子a*10中,標量10被擴充套件成2*2的形狀,然後再與矩陣a進行乘法運算。例子a*b中,一維陣列b通過複製擴充套件成了2*2的形狀,然後再與矩陣a進行乘法運算。這就是numpy的廣播功能。

x = np.array([[51,55],[14,19],[0,4]])

# 通過下標直接訪問

print(x[0])

print(x[0][1])

# 運用for語句訪問

for row in x:

print(row)

# 使用陣列訪問

x = x.flatten() # 將x轉化為一維陣列

print(x[np.array([0,2,4])]) # 訪問索引為0,2,4的元素

print(x[x>15]) # 訪問x中值大於15的元素

對應測試結果:

對於兩個numpy矩陣x和y,語句np.dot(x,y)表示矩陣乘法x*y,語句np.dot(y,x)表示矩陣乘法y*x。由於矩陣的乘法有對應維度必須相等的限制,我們運用np.dot()方法時要小心謹慎。

特別要注意的一點是,對於(8,9)這樣的一維陣列用於矩陣乘法時,它可以根據維度情況看作1*2的矩陣或2*1的矩陣。

下面是乙個具體例子:

import numpy as np

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

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

c = np.array([[6,6,6],[2,2,2]])

print(np.dot(a,b)) # 計算矩陣a,b的乘積,這裡的一維陣列b看作是2*1的矩陣

print(np.dot(b,c)) # 計算矩陣b,c的乘積,這裡的一維陣列b看作是1*2的矩陣

對應測試結果:

# 本部落格參考了《深度學習入門——基於python的理論與實現》(齋藤康毅著,陸宇杰譯),特在此宣告。

Numpy陣列學習筆記

1 x 0 是numpy中陣列的一種寫法,表示對乙個二維陣列,取該二維陣列第一維中的所有資料,第二維中取第0個資料,直觀來說,x 0 就是取所有行的第0個資料,x 1 就是取所有行的第1個資料。2 二維陣列索引訪問的例子 產生1 9的數 in 28 arr2d np.arange 1,10 resh...

NumPy學習筆記03 陣列屬性

numpy陣列的維數稱為秩 rank 一維陣列的秩為 1,二維陣列的秩為 2,以此類推。numpy 的陣列中比較重要 ndarray 物件屬性有 屬性說明 ndarray.ndim 秩,即軸的數量或維度的數量 ndarray.shape 陣列的維度,對於矩陣,n行m列 ndarray.size 陣列...

Numpy學習筆記(四)陣列屬性

一 陣列屬性 usr bin env python coding utf 8 author jia666 time 2021 2 20 16 44 import numpy as np a np.array 1,2,3 4,5,6 7,8,9 todo 1 檢視a的值 print a 1 2 3 4...