[Pytorch] Numpy基本用法


numpy(numerical python簡稱) 的核心內容是narray(多維數組),記錄numpy的用法

  • 創建數組

(1) 直接導入

import numpy as np vector = np.array([1,2,3,4]) maxtrix = np.array([[1,2],[3,4],[5,6]])

(2) 用list的方式來創建數組

nparray = np.array([i for i in range(10)])

     結果:

(3) numpy 內置方法來創建數組

#創建10個零元素的向量
np.zeros(10,dtype=int) #dtype指定數據類型,默認是float64 np.zeros(10) #數據類型是float64

#創建3x4的零矩陣
np.zeros(shape=(3,4))
np.zeros((3,4))
np.zeros([3,4])

#創建元素為1的數組
np.ones((3,4))#3x4 全1的二維數組,數據類型是float64

#創建全部為指定值的數組
np.full((3,5),121) #3x5 全為121的二維數組,數據類型是int(121是int)

#創建指定范圍的數組
np.arange(0,20,2)#前2個參數數范圍(前閉后開),第3個參數是步長2,默認是1,返回的結果是:
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])

np.linspace(0,20,5)#[0,20]分成5等分 返回結果:array([ 0., 5., 10., 15., 20.])

#random創建數組
np.random.randint(0,10,10) #產生一個0~10范圍內的10個隨機數
np.random.randint(0,10,size=(3,5))#創建一個3x5的數組,數組元素是范圍在[0,10)內的隨機數
  • Numpy的方法

(1)reshape(row,column)

  將array改成row X colum的數組

a = np.arange(15).reshape(3,5) #執行結果
[[ 0  1  2  3  4] [ 5  6  7  8  9] [10 11 12 13 14]]

(2)shape

  獲取array的行數和列數

a = np.arange(15).reshape(3,5) print(a.shape) ##執行結果:(3,5)

(3)ndim

  獲取array的維數,向量是1維,矩陣是2維。。。

x = np.arange(15) print(x.ndim) ##執行結果是1
X = x.reshape(3,5) print(X.ndim) #執行結果是2
  •  Numpy索引
matrix = np.array([[1,2,3],[20,30,40]]) print(matrix[0,1]) #取第0行第1列的元素:2
print(matrix[0][1])#和上面一樣:2

#切片取
matrix = np.array([[5,10,15],[20,25,30],[35,40,45]]) print(matrix[:,1]) #取第1列的所有元素
print(matrix[:,0:2])#取第0列和第1列所有元素
print(matrix[1:3,:])#取第1行和第2行的所有元素
print(matrix[1:3,0:2])#取第1行第0~1列和第2行第0~1列的所有元素
  • Numpy矩陣運算

(1)算術運算:加,減,乘,除,平方等等。算術運算都是對元素做處理(elementwise)

 

 

 

 

(2)矩陣乘法

mymatrix = np.array([[1,2,3],[4,5,6]]) a = np.array([[1,2],[3,4],[5,6]]) print(mymatrix.shape[1] == a.shape[0]) print(mymatrix.dot(a)) print(mymatrix)

(3) 矩陣的轉置

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

(4) 矩陣的逆

import numpy.linalg as lg A = np.array([[0,1],[2,3]]) invA = lg.inv(A) print(A) PRINT(A.dot(invA))

  • Numpy數據類型轉換

    numpy的數據類型在定義的時候,可以通過參數dtype設定,還可以通過參數astype來轉換

vector = np.array(['1','2','3']) vector = vector.astype(float) print(vector.dtype) #float64
  • Numpy的統計計算方法
##sum():計算矩陣元素和
matrix = np.array([[5,10,15],[20,10,30],[35,40,45]]) matrix.sum()#結果是210
 matrix.sum(axis=0)#返回每列總和,結果是 array([35, 40, 45])
matrix.sum(axis=1)#返回每行總和,結果是 array([ 30, 60, 120])

#max():取最大值
matrix.max()#返回最大值,結果是45
matrix.max(axis=0)#返回每一列的最大值,結果是array([35, 40, 45])
matrix.max(axis=1)#返回每一行的最大值,結果是array([15, 30, 45])

#mean():平均值
matrix.mean()#返回最大值,結果是23.333333333333332
matrix.mean(axis=0)#返回每一列的最大值,結果是array([20., 20., 30.])
matrix.mean(axis=1)#返回每一行的最大值,結果是array([10., 20., 40.])
  • Numpy的arg運算

(1) argmax函數:求數組中最大值的下標

(2) argmin函數:求數組中最小值的下標

matrix = np.array([[5,10,15],[20,10,30],[35,40,45]]) print(np.argmax(matrix))#結果:8
print(np.argmin(matrix))#結果:0

(3) argsort()函數:返回從小到大的索引值

x = np.arange(15) print(x) np.random.shuffle(x) print(x) sx = np.argsort(x) print(sx)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
[11 13 14  7  4 12  1 10  2  0  8  6  3  9  5]
[ 9  6  8 12  4 14 11  3 10 13  7  0  5  1  2]
  • Numpy fancyindexing

  通過索引取一個值,比如x[0]取第0個值,如果想要返回第3個,第5個等,需要用fancyindexing

x = np.random.randint(0,15,15) ind = [3,5,8] print(x) print(x[ind])
[ 4  3  1  5 12  8 14 11 13  9  0  6 10  2  7]
[[4 1]
 [3 5]]
  • Numpy數組的比較

  返回False/True

matrix = np.array([[5,10,15], [20,25,30], [35,40,45]]) m = (matrix == 25) print(m)    
[[False False False]
 [False  True False]
 [False False False]]

 

 

Referencehttps://docs.scipy.org/doc/numpy/user/quickstart.html

      深度學習與圖形識別:原理與實踐


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM