当我执行官方网站的代码时,我得到这样的错误。代码如下:
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)
列表项
3条答案
按热度按时间j2cgzkjk1#
正如另一个答案中所述,
as_matrix
方法自0.23.0起就被弃用,因此您应该使用to_numpy
。但是,我想强调的是,as_matrix
和to_numpy
具有不同的签名:as_matrix将列名列表作为其参数之一,以防您希望将转换限制为原始DataFrame的子集; to_numpy不接受这样的参数。因此,只有当您希望完全转换DataFrame时,这两个方法才完全可以互换。如果您(就像我的情况一样)需要转换矩阵的一个子集,那么在这两个用例中的用法将非常不同。例如,假设我们只需要将原始DataFrame的子集['col1 ',' col2','col4']转换为Numpy数组。在这种情况下,您可能有一些依赖
as_matrix
进行转换的遗留代码,看起来或多或少类似于:在将上面的代码转换为
to_numpy
时,不能像下面这样简单地替换函数名:因为
to_numpy
不接受列的子集作为参数。在这种情况下,解决方案是首先进行选择,然后将to_numpy
应用于结果,如下所示:zwghvu4y2#
as_matrix
方法的目的是将帧转换为其Numpy数组表示。
as_matrix
方法自0.23.0起已弃用0.25.1 documentation说:自版本0.23.0起弃用:使用DataFrame.values()代替
这两种选择是
1.. values():返回numpy.ndarray
1.. to_numpy():返回numpy.ndarray
但是,
.values()
文档给出了另一个警告:-Warning We recommend using DataFrame.to_numpy() instead.
我用一种稍微不同的方式得到了这个错误:
AttributeError: 'DataFrame' object has no attribute 'as_matrix'
taor4pac3#
as_matrix()
方法在新版本的pandas库中被弃用,但您也可以使用to_numpy()
方法或.values
属性。您应该注意到values
是一个属性,必须使用点表示法调用,并且末尾没有括号。否则会出错。例如上面提到的代码行:应改为:
而不是:
landmarks = landmarks_frame.iloc[n, 1:].values()
-->这会导致错误