Как я могу исправить следующую ошибку 'AttributeError: объект' dict_keys 'не имеет атрибута' remove ''? - PullRequest
0 голосов
/ 23 января 2020

Я пытался следовать примеру "https://github.com/EBjerrum/Deep-Chemometrics/blob/master/Deep_Chemometrics_with_data_augmentation.py.ipynb", но при выполнении первой части кода я сразу получаю ошибку.

#code
import scipy.io as sio
import numpy as np

def get_xY(filename, maxx=600):

#sio.whosmat(filename)

matcontents = sio.loadmat(filename)
keys = matcontents.keys()
for key in list(keys):
    if key[0] == '_':
        keys.remove(key)

keys.sort()

d = {}            
for key in keys:
    data = matcontents[key][0][0]
    if key[-1] == "Y":
        Ydata = data[5]
        d[key] = Ydata
    else:
        xdata = data[5][:,:maxx]
        d[key] = xdata
        d["axisscale"]= data[7][1][0][0][:maxx].astype(np.float)

return d

filename = 'Dataset/nir_shootout_2002.mat'
dataset = get_xY(filename)

'AttributeError: Объект 'dict_keys' не имеет атрибута 'remove' '

1 Ответ

1 голос
/ 23 января 2020

Кажется, что изменение keys.remove(key) на del keys[key] сработало для них. (Из комментария)


Эта проблема возникает, когда вы загружаете файл Matlab и код, ожидающий, что он не найден.

Указанная ошибка c равна 'dict_keys' object has no attribute 'remove'. Вот откуда я знаю, что python не находит диктовку.

Ваш код:

matcontents = sio.loadmat(filename)
keys = matcontents.keys()

Измените это на:

matcontents = sio.loadmat(filename)
print('matcontents',type(matcontents),matcontents)
keys = matcontents.keys()
print('keys',type(keys),keys)

Чтобы убедиться, что данные загружаются так, как вы ожидаете.

На этой странице также упоминается, что более новые версии файлов Matlab (7.3) должны импортироваться по-разному. Чтение .mat файлов в Python

...