2014-01-18 2 views
4

Я использую этот код прямо на странице scikit-learn. Это создает словарь:TypeError: итерация по массиву 0-d, с использованием numpy

symbol_dict = { 
    'TOT': 'Total', 
    'XOM': 'Exxon', 
    'CVX': 'Chevron',} 
symbols, names = np.array(symbol_dict.items()).T 

Но я получаю сообщение об ошибке:

TypeError: iteration over a 0-d array 

Этот код является прямо из примера кода, так что я понятия не имею, что происходит неправильно.

+0

Можете ли вы опубликовать полную отслеживающий? – user2357112

+0

Ваш код отлично работает, когда я пытаюсь. Проблема, похоже, исходит из того, что вы не показали. Отслеживание упростило бы отладку. – user2357112

+7

Вы на Python 3? На Python 3 'items' возвращает представление dict, которое NumPy не понимает. Используйте 'np.array (list (symbol_dict.items())). T', чтобы превратить представление в список кортежей, которые NumPy будет распознавать правильно. – user2357112

ответ

0

Как пользователь2357112 сказал, что в Python 3 dict.items() возвращает объект просмотра словаря, а не список пар ключ-значение (the difference is explained here). Подведем в list() создает список, который что-то NumPy может превратиться в массив:

np.array(list(symbol_dict.items())) 
Смежные вопросы