目前我正在嘗試將二維矩陣傳遞給 sklearn OneHotEncoder。每當我嘗試傳遞矩陣時,我都會收到此錯誤:
Encoders require their input to be uniformly strings or numbers. Got ['list']
經過一番調查,我看到回傳的矩陣顯示:
[list(['e2', 'e4', 'e5']) list(['e1', 'e2', 'e3', 'e4'])
list(['e1', 'e2']) list(['e1', 'e2', 'e3', 'e4', 'e5'])
list(['e1', 'e2', 'e3', 'e4', 'e5'])
list(['e1', 'e2', 'e3', 'e4', 'e5', 'e6'])]
正如您所看到的,我看到的不僅僅是一個二維矩陣,我看到外部陣列是正確的,但內部陣列用 list() 封裝了陣列。我想知道如何解決這個問題。
下面是我試圖從熊貓資料框中獲取 IDS 列串列的代碼
arr = np.asarray(result['IDS'], dtype=object)
uj5u.com熱心網友回復:
使用您問題中的復制粘貼:
In [239]: [list(['e2', 'e4', 'e5']), list(['e1', 'e2', 'e3', 'e4']),
...: list(['e1', 'e2']), list(['e1', 'e2', 'e3', 'e4', 'e5']),
...: list(['e1', 'e2', 'e3', 'e4', 'e5']),
...: list(['e1', 'e2', 'e3', 'e4', 'e5', 'e6'])]
Out[239]:
[['e2', 'e4', 'e5'],
['e1', 'e2', 'e3', 'e4'],
['e1', 'e2'],
['e1', 'e2', 'e3', 'e4', 'e5'],
['e1', 'e2', 'e3', 'e4', 'e5'],
['e1', 'e2', 'e3', 'e4', 'e5', 'e6']]
In [240]: np.array(_)
<ipython-input-240-7a2cd91c32ca>:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
np.array(_)
Out[240]:
array([list(['e2', 'e4', 'e5']), list(['e1', 'e2', 'e3', 'e4']),
list(['e1', 'e2']), list(['e1', 'e2', 'e3', 'e4', 'e5']),
list(['e1', 'e2', 'e3', 'e4', 'e5']),
list(['e1', 'e2', 'e3', 'e4', 'e5', 'e6'])], dtype=object)
我假設您使用了objectdtype,因為您收到了這個“衣衫襤褸”的警告:
np.asarray(result['IDS'], dtype=object)
我假設result['IDS']看起來很像Out[239],一個長度不同的串列串列。或者更確切地說result是一個資料框,這是一個系列,資料框的一列。
您可能想要顯示result或result['IDS']。我能猜到它長什么樣。
你期待什么樣的二維陣列?對于 2 到 6 個元素的組件串列,您無法創建二維陣列!
制作系列:
In [243]: S = pd.Series(Out[239])
In [244]: S
Out[244]:
0 [e2, e4, e5]
1 [e1, e2, e3, e4]
2 [e1, e2]
3 [e1, e2, e3, e4, e5]
4 [e1, e2, e3, e4, e5]
5 [e1, e2, e3, e4, e5, e6]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/454681.html
