TypeError: zip argument #2 must support iteration

44,464

It sounds like you have three arrays itemNameList, array_x, and array_y

Assuming they are all the same shape, you can just do:

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

EDIT

Your problem is that array_x and array_y are not actual numpy.array objects, but likely numpy.int32 (or some other non-iterable) objects:

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

Perhaps their initialization is not going as expected, or they are being changed from arrays somewhere in your code?

Share:
44,464
user21063
Author by

user21063

Updated on January 06, 2020

Comments

  • user21063
    user21063 over 4 years

    I got an error TypeError: zip argument #2 must support iteration.

    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)
    

    I think the part of zip(y, array_x, array_y) is wrong because zip's arguments are not list type,so I wrote

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

    but I got an error,

    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
    

    So, I cannot understand how to fix this. What should I do?