J'ai une erreur TypeError: l'argument Zip # 2 doit supporter l'itération.
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)
Je pense que la partie de Zip(y, array_x, array_y)
est fausse car les arguments de Zip ne sont pas du type liste, alors j'ai écrit
for i in y:
li_result = []
li_result = Zip(y, array_x[i], array_y[i])
mais j'ai eu une erreur,
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
Donc, je ne comprends pas comment résoudre ce problème… .. Que dois-je faire?
On dirait que vous avez trois tableaux itemNameList
, array_x
et array_y
En supposant qu'ils ont tous la même forme, vous pouvez simplement faire:
zipped = Zip(itemNameList,array_x,array_y)
li_result = list(zipped)
MODIFIER
Votre problème est que array_x
et array_y
ne sont pas des objets numpy.array
réels, mais plutôt des objets numpy.int32
(ou d'autres objets non-itérables):
array_x = np.int32(np.zeros(None))
array_x.shape
# ()
array_x.__iter__
# AttributeError: 'numpy.int32' object has no attribute '__iter__'
Peut-être que leur initialisation ne se déroule pas comme prévu ou que leur tableau est modifié quelque part dans votre code?
Voici comment Zip
(ou list (Zip en py3), peut transformer plusieurs listes en une liste de n-uplets:
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)]