AttributeError: у объекта 'Series' нет атрибута 'as_matrix' Почему это ошибка? - PullRequest
2 голосов
/ 11 февраля 2020

Когда я выполняю код официального сайта, я получаю такую ​​ошибку. Почему? код показывается следующим образом:

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)

Элемент списка

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Целью метода 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'

1 голос
/ 14 апреля 2020

Как указано в другом ответе, метод as_matrix устарел с 0.23.0, поэтому вместо него следует использовать to_numpy. Однако я хочу подчеркнуть тот факт, что as_matrix и to_numpy имеют разные подписи: as_matrix принимает список имен столбцов в качестве одного из параметров, если вы хотите ограничить преобразование подмножеством оригинального DataFrame; to_ numpy не принимает такой параметр. Как следствие, эти два метода полностью взаимозаменяемы, только если вы хотите полностью преобразовать DataFrame. Если вам (как в моем случае) необходимо преобразовать подмножество матрицы, использование будет совершенно разным в двух случаях использования.

Например, давайте предположим, что нам нужно только преобразовать подмножество ['col1' , 'col2', 'col4'] нашего исходного DataFrame в массив Numpy. В этом случае у вас может быть какой-то устаревший код, основанный на as_matrix для преобразования, который выглядит примерно так:

df.as_matrix(['col1', 'col2', 'col4'])

При преобразовании приведенного выше кода в to_numpy вы не можете просто заменить имя функции, например in:

df.to_numpy(['col1', 'col2', 'col4'])  # WRONG

, поскольку to_numpy не принимает подмножество столбцов в качестве параметра. Решением в этом случае было бы сначала сделать выбор и применить to_numpy к результату, как в:

df[['col1', 'col2', 'col4']].to_numpy()  # CORRECT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...