2016-03-17 59 views
0

我使用熊貓來生成一些信息和功能。我將使用該數據庫作爲sklearn的輸入。目前,我正在使用.as_matrix()將數據幀轉換爲數組。以下是輸出:將嵌套numpy數組併入2D數組

array([[0.4437294900417328, 0.13434134423732758, 0.474, 0.482, 
    array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0])], 
    [0.09896088391542435, 0.10105254501104355, 0.474, 0.526, 
    array([0, 0, 0, 0, 0, 1, 0, 0, 0, 0])], 
    [0.026971107348799706, 0.08766224980354309, 0.474, 0.581, 
    array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0])], 
    ..., 

我想解散這個內部數組到父2D數組。結果應該看起來像這樣。

array([[0.4437294900417328, 0.13434134423732758, 0.474, 0.482, 
    0, 0, 0, 0, 0, 0, 1, 0, 0, 0], 
    [0.09896088391542435, 0.10105254501104355, 0.474, 0.526, 
    0, 0, 0, 0, 0, 1, 0, 0, 0, 0], 
    [0.026971107348799706, 0.08766224980354309, 0.474, 0.581, 
    0, 0, 0, 0, 0, 0, 1, 0, 0, 0], 
    ..., 

TIA

+0

它應該已經輸出一個二維數組,除非你的數據有些奇怪。在as_matrix()之前你的數據框是什麼樣的? – JohnE

+0

外部數組是dtype對象。如果子陣列具有相同的大小,則可以使用ravel和concateate。 – hpaulj

+0

你需要告訴我們主陣列的'shape'和'dtype'。有幾層嵌套很難從打印中解讀出來。它是一個列表或二維數組的數組?它看起來像內部列表或維度由一堆浮動加上一個數組組成。我們需要知道這是爲了能夠重新創建數組(不是確切的數字,只是結構),並在交互式shell中使用它。 – hpaulj

回答

0

正如我評論,你的陣列的確切結構尚不清楚。我確定外部dtype是對象。熊貓經常使用它來保存混合數據。

這裏有一個猜測,和可能的解決方案:

使對象數組與整數還有一些浮標和數組填充:

In [38]: A=np.empty((3,5),dtype=object) 
In [39]: A[:,:4]=np.arange(12.).reshape(3,4)/10 
In [40]: A[0,-1]=np.arange(5) 
In [41]: A[1,-1]=np.arange(1,6) 
In [42]: A[2,-1]=np.arange(2,7) 
In [43]: A 
Out[43]: 
array([[0.0, 0.1, 0.2, 0.3, array([0, 1, 2, 3, 4])], 
     [0.4, 0.5, 0.6, 0.7, array([1, 2, 3, 4, 5])], 
     [0.8, 0.9, 1.0, 1.1, array([2, 3, 4, 5, 6])]], dtype=object) 

打印是相似的。 reshape,concatenate,ravel等不要加入浮動和數組。

反而讓讓一個數組來保存的預期值,並將其複製到它:

In [44]: B=np.zeros((3,9),float) 
In [45]: B[:,:4]=A[:,:4] 

複製浮動列很容易。但是將數組重新編譯爲可以作爲塊複製的內容需要串聯。該vstack形式,似乎這樣的伎倆:

In [46]: B[:,4:]=np.vstack(A[:,-1]) 
In [47]: B 
Out[47]: 
array([[ 0. , 0.1, 0.2, 0.3, 0. , 1. , 2. , 3. , 4. ], 
     [ 0.4, 0.5, 0.6, 0.7, 1. , 2. , 3. , 4. , 5. ], 
     [ 0.8, 0.9, 1. , 1.1, 2. , 3. , 4. , 5. , 6. ]]) 

我不得不重新創建陣列,基於我所知道的陣列顯示,包括對象的類型。然後,我只好四處遊玩,嘗試各種加入價值的方式。所以有很多嘗試和錯誤。