[英]AttributeError: 'Series' object has no attribute 'as_matrix' Why is it error?
當我執行官網的代碼時,出現這樣的錯誤。 為什么? 代碼顯示如下:
landmarks_frame = pd.read_csv(‘F:\OfficialData\faces\face_landmarks.csv’)
n = 65
img_name = landmarks_frame.iloc[n, 0]
landmarks = landmarks_frame.iloc[n, 1:].as_matrix()
landmarks = landmarks.astype(‘float’).reshape(-1, 2)
項目清單
如另一個答案中所述, as_matrix
方法自 0.23.0 起已棄用,因此您應該改用to_numpy
。 但是,我想強調一個事實,即as_matrix
和to_numpy
具有不同的簽名: as_matrix將列名列表作為其參數之一,以防您想將轉換限制為原始 DataFrame 的子集; to_numpy不接受這樣的參數。 因此,只有當您想完全轉換 DataFrame 時,這兩種方法才完全可以互換。 如果您(如我的情況)需要轉換矩陣的子集,則兩種用例的用法將大不相同。
例如,假設我們只需要將原始 DataFrame 的子集 ['col1', 'col2', 'col4'] 轉換為 Numpy 數組。 在這種情況下,您可能會有一些依賴as_matrix
進行轉換的遺留代碼,它或多或少看起來像:
df.as_matrix(['col1', 'col2', 'col4'])
將上述代碼轉換為to_numpy
您不能簡單地替換函數名稱,如:
df.to_numpy(['col1', 'col2', 'col4']) # WRONG
因為to_numpy
不接受列的子集作為參數。 在這種情況下,解決方案是先進行選擇,然后將to_numpy
應用於結果,如下所示:
df[['col1', 'col2', 'col4']].to_numpy() # CORRECT
as_matrix
方法的目的是
將幀轉換為其 Numpy 數組表示。
自 0.23.0 起不推薦使用as_matrix
方法
0.25.1 文檔說:自 0.23.0 版起已棄用:改用 DataFrame.values()
兩種選擇是
但是, .values()
文檔給出了另一個警告:- Warning We recommend using DataFrame.to_numpy() instead.
我以稍微不同的方式得到錯誤: AttributeError: 'DataFrame' object has no attribute 'as_matrix'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.