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の引数がリスト型ではないため、Zip(y, array_x, array_y)
の部分が間違っていると思います。
_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
の3つの配列があるようです
それらがすべて同じ形であると仮定すると、次のようにすることができます:
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__'
おそらく、それらの初期化が期待どおりに行われていないか、コードのどこかで配列から変更されていますか?
Zip
(またはlist(Zip in 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)]