2017-05-16 123 views
0

我目前有一個列表,其中包含sklearn分類器的所有輸入。該列表中的每個元素都是一個功能列表,其中每個元素都代表我的數據集中的一首歌曲。如何將列表的Python列表轉換爲2D numpy數組sklearn.preprocessing

我需要將此結構轉換爲2D numpy數組,因此我可以通過sklearn的預處理來擴展我的數據。這證明是非常困難的。

y = [] all_feats = [] for song in data: mfccs_in_song = song[0] oned_mfccs_in_song = [] for frame in mfccs_in_song: for m in frame: oned_mfccs_in_song.append(m) all_feats.append(oned_mfccs_in_song) label = song[-1] y.append(label)

長話短說,all_feats是列出的該列表。它的長度爲600.我怎樣才能將它轉換爲一個numpy數組進行預處理?我嘗試了很多東西,包括簡單的all_feats = np.array(all_feats),但是這不起作用。

+0

使用'all_feats = np.array(all_feats)'是什麼問題?它會給出錯誤嗎?什麼錯誤? – Antimony

+0

文件「/Library/Python/2.7/site-packages/sklearn/preprocessing/data.py」,第129行,比例尺 dtype = FLOAT_DTYPES) 文件「/Library/Python/2.7/site-packages/sklearn/utils /validation.py「,第382行,在check_array中 array = np.array(array,dtype = dtype,order = order,copy = copy) ValueError:使用序列設置數組元素。 – ohbrobig

+0

看看給出的建議/答案[這裏](http://stackoverflow.com/questions/4674473/valueerror-setting-an-array-element-with-a-sequence)。更具體地說,看看最終的'all_feats'。它可能沒有相同大小的子列表。 – Antimony

回答

1

該錯誤表明可能沒有相同大小的子列表。看看它的內容,一旦你找出了子列表的正確長度,以及如何修剪多餘的元素,你可以運行all_feats = np.array(all_feats),它應該工作!

查看this link的更多解釋。

+1

是的,修復它。簡單地找到所有子列表的最小長度並調整壞蘋果的大小! Python切入救援。 – ohbrobig

相關問題