AttributeError: 'Series' 对象没有属性 'as_matrix' 为什么会出错?

YC *_*ang 22 python numpy pandas

当我执行官网的代码时,出现这样的错误。为什么?代码显示如下:

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)
Run Code Online (Sandbox Code Playgroud)

项目清单

Sal*_*lli 47

如另一个答案中所述,该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'])
Run Code Online (Sandbox Code Playgroud)

将上述代码转换为to_numpy您不能简单地替换函数名称,如:

df.to_numpy(['col1', 'col2', 'col4'])  # WRONG
Run Code Online (Sandbox Code Playgroud)

因为to_numpy不接受列的子集作为参数。在这种情况下,解决方案是先进行选择,然后应用于to_numpy结果,如下所示:

df[['col1', 'col2', 'col4']].to_numpy()  # CORRECT
Run Code Online (Sandbox Code Playgroud)


Rem*_*oon 19

as_matrix方法的目的是

将帧转换为其 Numpy 数组表示。

as_matrix方法自 0.23.0
已弃用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'