TypeError:zip参数2必须支持迭代

use*_*063 5 python numpy matplotlib scipy

我收到一个错误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)
Run Code Online (Sandbox Code Playgroud)

我认为的部分zip(y, array_x, array_y)是错误的,因为zip的参数不是列表类型,所以我写了

for i in y:
 li_result = []
 li_result = zip(y, array_x[i], array_y[i])
Run Code Online (Sandbox Code Playgroud)

但是我有一个错误

li_result = zip(y, array_x[i], array_y[i])
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)

因此,我不知道如何解决此问题。我该怎么办?

Cri*_*pin 1

听起来你有三个数组itemNameList, array_x, 和array_y

假设它们都是相同的形状,你可以这样做:

zipped = zip(itemNameList,array_x,array_y)
li_result = list(zipped)
Run Code Online (Sandbox Code Playgroud)

编辑

你的问题是array_xarray_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__'
Run Code Online (Sandbox Code Playgroud)

也许它们的初始化没有按预期进行,或者它们正在从代码中的某个地方的数组进行更改?