2017-07-02 54 views
0

我有熊貓系列和這裏有兩個前兩行:熊貓系列陣列轉換讓我數組的數組對象

X.head(2) 
Which has 1D arrays for each row: the column header is mels_flatten 
mels_flatten 
0 [0.0171469795289, 0.0173154008662, 0.395695541... 
1 [0.0471267533454, 0.0061760868171, 0.005647608... 

我想要的值存儲在一個單一的陣列,以提供給分類模型。

np.vstack(X.values) 
or 
np.array(X.values) 

以下

array([[ array([ 1.71469795e-02, 1.73154009e-02, 3.95695542e-01, ..., 
     2.35955651e-04, 8.64118460e-04, 7.74663408e-04])], 
     [ array([ 0.04712675, 0.00617609, 0.00564761, ..., 0.00277199, 
     0.00205229, 0.00043118])], 

兩個回報我不知道如何處理數組對象的數組。

我預期的結果是:

array([[ 1.71469795e-02, 1.73154009e-02, 3.95695542e-01, ..., 
     2.35955651e-04, 8.64118460e-04, 7.74663408e-04]], 
     [ 0.04712675, 0.00617609, 0.00564761, ..., 0.00277199, 
     0.00205229, 0.00043118]], 

試過np.concatenate和np.resize因爲沒有運氣提出了一些其他職位。

+0

爲什麼你有一個列表/數組值系列?爲什麼你沒有數據框呢? –

+0

我正在使用Librosa庫來讀取Audio .wav文件,該庫提供音頻信號的數組表示。我的意圖是以類似的方式處理音頻信號MNIST手寫數字識別的作品。在MNIST的情況下,平面陣列包含28x28像素信息陣列中的每張圖片 – Spandan

回答

0

我發現它很可能不是所有的一維數組是相同的長度,即你的系列是不具有矩形二維數組兼容。

考慮以下虛設例如:

import pandas as pd 
import numpy as np 
X = pd.Series([np.array([1,2,3]),np.array([4,5,6])]) 
# 0 [1, 2, 3] 
# 1 [4, 5, 6] 
# dtype: object 

np.vstack(X.values) 
# array([[1, 2, 3], 
#  [4, 5, 6]]) 

作爲上述表明,1D陣列(或列表)相同大小的的集合將被很好地堆疊以2D陣列。檢查數組的大小,你可能會發現有一些出入:

>>> X.apply(len) 
0 3 
1 3 
dtype: int64 

如果X.apply(len).unique()收益超過1元的數組,你會看到這個問題的證明。另外,在上述方形外殼:

>>> X.apply(len).unique() 
array([3]) 

在非符合例如:

>>> Y = pd.Series([np.array([1,2,3]),np.array([4,5])]) 
>>> np.array(Y.values) 
array([array([1, 2, 3]), array([4, 5])], dtype=object) 
>>> Y.apply(len).unique() 
array([3, 2]) 

正如你可以看到,嵌套陣列結果被耦合到物品的非唯一長度的原始陣列內部。

+0

謝謝,我最初懷疑,但陣列中的所有元素具有相同的長度:這裏是輸出'X ['mels_flatten']。 apply(len).unique()'array([1536,0]) – Spandan

+0

@Spandan然後你需要深入挖掘。你確定他們都是1D陣列嗎?使用'.apply(np.shape)':你還得到一個單一的形狀元組嗎? –

+0

@Spandan現在我看到了你編輯的評論.......你認爲'array([1536,0])有多少獨特元素?我可以計數2.至少有一行包含長度爲0的數組/列表。 –