天天看點

了解張量(tensor)和numpy

标量是一維向量。

數組是二維向量。

矩陣是三維向量

張量(tensor)是任意次元的向量。

了解張量(tensor)和numpy

NumPy 中處理數字的常見方式是通過 ndarray 對象。它們與 Python 清單相似,但是可以有任意數量的次元。而且,ndarray 支援快速的數學運算,這正是我們想要的。

由于它可以存儲任意數量的次元,你可以使用 ndarray來表示:标量、向量、矩陣或張量。

s = np.array(5) # 标量
v = np.array([1,2,3]) # 向量
m = np.array([[1,2,3], [4,5,6], [7,8,9]]) # 矩陣
t = np.array([
				[
					[[1],[2]],
					[[3],[4]],
					[[5],[6]]
				],
				[
					[[7],[8]],
					[[9],[10]],
					[[11],[12]]
				],
				[
					[[13],[14]],
					[[15],[16]],
					[[17],[17]]
				]
			]) 
# 張量,t.shape 會傳回 (3, 3, 2, 1),表示一個 3x3x2x1 的張量

           

矩陣乘積

m = np.array([[1,2,3],[4,5,6]])
m
# 顯示以下結果:
# array([[1, 2, 3],
#        [4, 5, 6]])

n = m * 0.25
n
# 顯示以下結果:
# array([[ 0.25,  0.5 ,  0.75],
#        [ 1.  ,  1.25,  1.5 ]])

m * n
# 顯示以下結果:
# array([[ 0.25,  1.  ,  2.25],
#        [ 4.  ,  6.25,  9.  ]])

np.multiply(m, n)   # 相當于 m * n
# 顯示以下結果:
# array([[ 0.25,  1.  ,  2.25],
#        [ 4.  ,  6.25,  9.  ]])

           

矩陣轉置

m_t = m.T
m_t[3][1] = 200
m_t
# 顯示以下結果:
# array([[ 1,   5, 9],
#        [ 2,   6, 10],
#        [ 3,   7, 11],
#        [ 4, 200, 12]])

m
# 顯示以下結果:
# array([[ 1,  2,  3,   4],
#        [ 5,  6,  7, 200],
#        [ 9, 10, 11,  12]])
           

繼續閱讀