簡體   English   中英

AttributeError: 'Series' 對象沒有屬性 'as_matrix' 為什么會出錯?

[英]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_matrixto_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()

兩種選擇是

  1. .values() :返回 numpy.ndarray
  2. .to_numpy() :返回 numpy.ndarray

但是, .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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM