在Numpy中处理N个1矩阵

时间:2014-03-13 16:04:50

标签: python arrays numpy matrix

给定一个大小为(n,)的numpy数组,如何将其转换为大小为(n,1)的numpy数组。

原因是因为我试图将矩阵乘以大小为(n,)(,n)的numpy数组以获得(n,n)但是当我这样做时:

numpy.dot(a,b.T)

它表示你无法做到。我知道转换(n,)没有做任何事情,所以更改(n,)并使它们(n,1)并一起避免这个问题会很好。

2 个答案:

答案 0 :(得分:4)

您可以将None用于您希望被视为退化的维度。

a = np.asarray([1,2,3])
a[:]
a[:, None]

In [48]: a
Out[48]: array([1, 2, 3])

In [49]: a[:]
Out[49]: array([1, 2, 3])

In [50]: a[:, None]
Out[50]: 
array([[1],
       [2],
       [3]])

答案 1 :(得分:3)

使用reshape (-1,1)(n,)重塑为(n,1),详见示例:

In [1]:

import numpy as np
A=np.random.random(10)
In [2]:

A.shape
Out[2]:
(10,)
In [3]:

A1=A.reshape(-1,1)
In [4]:

A1.shape
Out[4]:
(10, 1)
In [5]:

A.T
Out[5]:
array([ 0.6014423 ,  0.51400033,  0.95006413,  0.54321892,  0.2150995 ,
        0.09486603,  0.54560678,  0.58036358,  0.99914564,  0.09245124])
In [6]:

A1.T
Out[6]:
array([[ 0.6014423 ,  0.51400033,  0.95006413,  0.54321892,  0.2150995 ,
         0.09486603,  0.54560678,  0.58036358,  0.99914564,  0.09245124]])