Arhn - архитектура программирования

TypeError: аргумент zip #2 должен поддерживать итерацию

Я получил ошибку TypeError: zip аргумент #2 должен поддерживать итерацию.

data = libraries.pd.read_csv('a.csv',header=1, parse_dates=True)
datas = DataCleaning.DataCleaning(data)
datas.cleaning(media)

calDf = datas.getDatas()

array_x = libraries.np.int32(libraries.np.zeros(len(calDf)))
array_y = libraries.np.int32(libraries.np.zeros(len(calDf)))


if len(calDf) > 1:
    for num in range(len(calDf)):
        array_x[num] = calDf.iloc[num,0]
        array_y[num] = calDf.iloc[num,1]

    def nonlinear_fit(x,a,b):
        return  b * libraries.np.exp(x / (a+x))

    prameter_initial = libraries.np.array([0,0])

    try:
        param, cov = libraries.curve_fit(nonlinear_fit, array_x, array_y, maxfev=5000)

    except RuntimeError:
        print("Error - curve_fit failed")

li_result = []
li_result = zip(y, array_x, array_y)

Я думаю, что часть zip(y, array_x, array_y) неверна, потому что аргументы zip не являются списком, поэтому я написал

for i in y:
 li_result = []
 li_result = zip(y, array_x[i], array_y[i])

но я получил ошибку,

li_result = zip(y, array_x[i], array_y[i])
IndexError: only integers, slices (`:`), ellipsis (`...`),
numpy.newaxis (`None`) and integer or boolean arrays are valid indices

Вот и не могу понять как это исправить. Что я должен делать?


  • Расскажите нам о природе y, array_x и array_y. Если массивы сообщают нам форму. И какова цель zip? Почему li_result назначается дважды? 22.03.2017
  • y — строковый тип и имя элемента. array_x имеет тип int, это цена. array_y имеет тип int, это подсчет запасов. Я хочу составить список этих данных, кроме того, я составляю список со всеми данными элемента. Итак, мой идеальный список имеет вид [('itemA', 1000, 100), ('itemB' , 2000, 2000), ('itemC', 300, 5000)]. 22.03.2017
  • Я читал, что функция zip предназначена только для серий (например, списка). y, array_x и array_y являются строками и целыми числами, так что это неправильно? 22.03.2017
  • так y это список строк? 22.03.2017
  • No.y - это имя элемента.y находится в itemNameList, например [itemA,itemB,itemC] y - эти элементы списка. 22.03.2017

Ответы:


1

Похоже, у вас есть три массива itemNameList, array_x и array_y

Предполагая, что все они имеют одинаковую форму, вы можете просто сделать:

zipped = zip(itemNameList,array_x,array_y)
li_result = list(zipped)

ИЗМЕНИТЬ

Ваша проблема в том, что array_x и array_y не являются фактическими объектами numpy.array, а, скорее всего, numpy.int32 (или некоторыми другими неитерируемыми) объектами:

array_x = np.int32(np.zeros(None))
array_x.shape
# ()
array_x.__iter__
# AttributeError: 'numpy.int32' object has no attribute '__iter__'

Возможно, их инициализация идет не так, как ожидалось, или они изменяются из массивов где-то в вашем коде?

22.03.2017
  • напечатайте array_x.shape и array_y.shape и ответьте с результатом 22.03.2017
  • Я написал print(array_x.shape) print(array_y.shape), но ()() распечатывается. 22.03.2017
  • спасибо, что инициализация commetns.array_x и array_y не выполнена, так что это неправильная точка зрения? Я думал, что array_x и array_y являются переменными, поэтому их инициализация не нужна. 22.03.2017
  • вы уверены, что array_x = libraries.np.int32(libraries.np.zeros(len(calDf))) работает так, как вы ожидаете? Является ли array_x итерируемым непосредственно после этой строки? 22.03.2017
  • Когда я распечатываю array_x, результат выглядит так , я думаю код хороший.... 22.03.2017
  • как насчет array_y? 22.03.2017
  • array_y похож на [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] Это то же самое 22.03.2017
  • array_y и array_x выглядят вот так прямо перед тем, как вы попытаетесь их zip? 22.03.2017
  • ваша точка зрения верна!! прежде чем zip, print(array_x)&print(array_y) будут распечатаны 0 22.03.2017

  • 2

    Вот как zip (или list(zip в py3) может превратить несколько списков в список кортежей:

    In [76]: y = ['item1', 'item2','item3']  # list of strings
    In [77]: xdata = [100,200,300]         # list of numbers
    In [78]: ydata = np.array([1000,2000,3000])  # equivalent array of numbers
    In [79]: list(zip(y,xdata,ydata))
    Out[79]: [('item1', 100, 1000), ('item2', 200, 2000), ('item3', 300, 3000)]
    
    22.03.2017
  • спасибо за ваши комментарии. Я не могу понять, почему только эта часть В [78]: ydata = np.array([1000,2000,3000]) используется функция массива? Я думаю, что ydata уже является типом списка. 22.03.2017
  • Просто чтобы показать, что массив можно заархивировать как список 22.03.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..