标量是一維向量。
數組是二維向量。
矩陣是三維向量
張量(tensor)是任意次元的向量。
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]])