标量与向量
python
import numpy as np
#定义向量
x = np.array([2,5,8])
print(x)
print(x.shape)
#向量转置
print(x.T)
print(x.t.shape)
y = np.array([1,3,7])
# 向量相乘 [2,15,56]
print(x * y)
# 向量点乘,或者np.dot(x,y) 73
print(x.dot(y))
# python3.5之后用@符号
print(x @ y)
python
#计算范数
l0_norm = np.linalg.norm(x,ord=0) #3.0
l1_norm = np.linalg.norm(x,ord=1) # 15.0
l2_norm = np.linalg.norm(x,ord=2) #
矩阵与张量
python
import numpy as np
A = np.array([[1,2,3],[4,5,6]])
B = np.array([[1,3,7],[5,0,2]])
print(A)
print(A.shape)
#矩阵与矩阵相乘(对应位置元素相乘,哈达玛积)
print(A * B)
#矩阵乘法
print(A.dot(B))
print(A.dot(B.T))
print(A @ B.T)
# 求逆
C = np.array([[1,2],[3,5]])
C_inv = np.linalg.inv(C)
print(C.dot(C_inv))
print(C_inv.dot(C))
C_inv = np.around(C_inv).astype(int)
# 向量化
print(A.flatten())
# 矩阵内积
print("<A,B> = ",np.sum(A*B))
print("<A,B> = ",np.dot(A.flatten(),B.flatten()))
#克罗内克积
print(np.kron(A,B))
python
# 定义张量
tensor = np.array([[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]])
print(tensor)
print(tensor.shape) #两个矩阵,每个矩阵是2*3
矩阵求导
python
#计算梯度
f = np.array([1,2,4,7,11,16])
np.gradient(f)