numpy中直接创建ndarray,得到的是一维数组,也就是X.shape
是(X.size, )
;数学中定义的列向量是一个二维矩阵,大小是(X.size, 1)
.
于是,需要把1维的数组转化为2维的列向量,有扩充维度的两种方法:
X[:,np.newaxis]
X[:,None]
例如,想要实现矩阵与向量的相乘:
X0 = np.arange(6) # 一维数组,不能与矩阵相乘
# array([0,1,2,3,4,5])
X0.shape
# (6,)
# X0 = X0[np.newaxis,:] # 二维行向量,1*6
# X0 = X0[:,np.newaxis].T # 二维行向量,1*6
# 1. np.newaxis
X01 = X0[:,np.newaxis] # 二维列向量,6*1
X01.shape
# (6,1)
# 2. None
# 也可以这样,利用None关键字转化成向量
X02 = X0[:,None]
Phi_t0tf = np.array([[1,0,0,0,0,0],
[0,1,0,0,0,0],
[0,0,1,0,0,0],
[0,0,0,1,0,0],
[0,0,0,0,1,0],
[0,0,0,0,0,1]])
Xf = Phi_t0tf@X01 # 二维矩阵相乘