最近用了矩阵转置 numpy.transpose(),发现了一点有趣的现象:
x=linspace(0,4,5)
array([0.,1.,2.,3.,4.])
x.shape
(5, )
想把x从一行,变成一列,如下直接转置会失败:
y=transpose(x)
正确的做法是:
x.shape=(5,1)
y=transpose(x)
查看结果:
y
array([[0.,1.,2.,3.,4.]])
y.shape
(1,5)
原来transpose的操作依赖于shape参数,对于一维的shape,转置是不起作用的.
这点matlab倒是显得很人性化,里面的一维向量转置很方便.例如
x=1:10;%一维行向量
y=x';%一维列向量
当然Python中Numpy的实现机制,是基于类的,这和Matlab完全不一样.这点在数组(矩阵)转置的时候也有所体现.