numpy 一维矩阵转置问题
numpy中,我们如果直接对一维行矩阵转置,会出现问题,以为 1-d array 的 shape 是 (d,) ,而不是 (1,d) , 转置后仍为 (d,)
这时,可以采用 numpy.expand_dims() 函数对一维矩阵的 shape 进行操作,使其变成 (1,d)
示例
d=np.array([1,2,3,4])
print('d.shape',d.shape)
print('d.T.shape',d.shape)
print('d=',d)
print('d.T=',d)
结果
d.shape (4,)
d.T.shape (4,)
d= [1 2 3 4]
d.T= [1 2 3 4]
不难发现,转置后的维度没有发生改变
解决方法1
expand_dims后的shape是(1,9),a.T就没有问题了
d=np.expand_dims(d,axis=0)
print('d.shape',d.shape)
print('d.T.shape',d.T.shape)
print('d=',d)
print('d.T=',d)
结果
d.shape (1, 4)
d.T.shape (4, 1)
d= [[1 2 3 4]]
d.T= [[1]
[2]
[3]
[4]]
解决方法2
d=d[np.newaxis,:]#Equivalent to np.expand_dims(x, axis=0)
print('d.shape',d.shape)
print('d.T.shape',d.T.shape)
print('d=',d)
print('d.T=',d)
结果
d.shape (1, 4)
d.T.shape (4, 1)
d= [[1 2 3 4]]
d.T= [[1]
[2]
[3]
[4]]
也可以
d=d[:,np.newaxis]#Equivalent to np.expand_dims(x, axis=1)
print('d=',d)
结果
d= [[1]
[2]
[3]
[4]]