2016-11-27 90 views
4

我以某種方式得到了一個pandas.Series其中包含一堆數組,其中包含下面代碼中的s如何將一系列數組轉換爲pandas/numpy中的單個矩陣?

data = [[1,2,3],[2,3,4],[3,4,5],[2,3,4],[3,4,5],[2,3,4], 
     [3,4,5],[2,3,4],[3,4,5],[2,3,4],[3,4,5]] 
s = pd.Series(data = data) 
s.shape # output ---> (11L,) 
# try to convert s to matrix 
sm = s.as_matrix() 
# but... 
sm.shape # output ---> (11L,) 

如何將s轉換爲形狀爲(11,3)的矩陣?謝謝!

+0

你爲什麼要經歷一個系列?爲什麼不直接轉換爲矩陣,如果這是你想要的? –

+1

如何將numpy導入爲np; np.array(數據)'?你可能不需要製作一個'系列'。另外請注意,'(11,3)'尺寸最好用'DataFrame'表示。 – Abdou

+0

而你的系列包含列表,而不是數組。 –

回答

3

如果由於某種原因,你有發現自己有Series的是可憎的,得到它回到那種matrixarray你想要的是簡單的:

In [16]: s 
Out[16]: 
0  [1, 2, 3] 
1  [2, 3, 4] 
2  [3, 4, 5] 
3  [2, 3, 4] 
4  [3, 4, 5] 
5  [2, 3, 4] 
6  [3, 4, 5] 
7  [2, 3, 4] 
8  [3, 4, 5] 
9  [2, 3, 4] 
10 [3, 4, 5] 
dtype: object 

In [17]: sm = np.matrix(s.tolist()) 

In [18]: sm 
Out[18]: 
matrix([[1, 2, 3], 
     [2, 3, 4], 
     [3, 4, 5], 
     [2, 3, 4], 
     [3, 4, 5], 
     [2, 3, 4], 
     [3, 4, 5], 
     [2, 3, 4], 
     [3, 4, 5], 
     [2, 3, 4], 
     [3, 4, 5]]) 

In [19]: sm.shape 
Out[19]: (11, 3) 

但是,除非它的東西,你可以」這個系列沒什麼意義。

0

另一種方法是提取你的系列的值,並在其上使用numpy.stack。

np.stack(s.values) 

PS。我經常遇到類似的情況。