Skip to main content
 首页 » 编程设计

python之numpy 不能将行向量转置为列

2025年05月04日16虾米姐

numpy 好像不能转置向量? 我想将一个向量投影到一个矩阵中,你可以使用 np.tile 对行做没有问题 -

In [7]: vector = np.arange(start=0,stop=1,step=1.0/5) 
In [8]: mat = np.tile(vector, (2,1))    
In [9]: mat 
Out[9]: array([[ 0. ,  0.2,  0.4,  0.6,  0.8], 
               [ 0. ,  0.2,  0.4,  0.6,  0.8]]) 

但是如果你想平铺与列相同的向量,你似乎必须这样做

In[11]: mat = np.tile(vector,(2,1)) 
In[12]: mat=mat.transpose() 
In[13]: mat 
Out[13]: array([[ 0. ,  0. ], 
                 [ 0.2,  0.2], 
                 [ 0.4,  0.4], 
                 [ 0.6,  0.6], 
                 [ 0.8,  0.8]]) 

而不是更合乎逻辑的(无论如何对我来说)

In[30]: mat = np.tile(vector.transpose(),(1,2)) 

它没有给出所需的结果,而是给出一个行向量,转置无关紧要 -

Out[31]: array([[ 0. ,  0.2,  0.4,  0.6,  0.8,  0. ,  0.2,  0.4,  0.6,  0.8]]) 

虽然这不是什么大问题,但我担心它的不公平性

请您参考如下方法:

transpose 实际上对一维数组没有任何作用。一种替代方法是首先将 vector reshape 为 2d,从中获得两个轴,然后您可以使用 np.tile 并指定 reps 参数对于每个轴:

np.tile(vector[:,None], (1,2)) 
#array([[ 0. ,  0. ], 
#       [ 0.2,  0.2], 
#       [ 0.4,  0.4], 
#       [ 0.6,  0.6], 
#       [ 0.8,  0.8]])