我收到错误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
所以,我无法理解如何解决这个问题.
我该怎么办?
最佳答案 听起来你有三个数组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__'
也许他们的初始化没有按预期进行,或者它们是从代码中某处的数组更改的?