在写项目的一个函数迭代时,出现了错误:TypeError: 'int' object is not callable。
参考他人文章,发现是由于变量名和函数名相同,而导致的错误。
%%time
arr_data = np.array([[0]*df.shape[0]])
import numpy as np
@np.vectorize
def bianhao(arr_data, veh_vector, location_time_vector, veh_num, stime, etime, bianhao):
if (veh_vector == veh_num) & (location_time_vector <= etime) & (location_time_vector >= stime):
return bianhao
else:
return arr_data
veh_vector = df1[:,1]
location_time_vector = df1[:,6]
# for i in range(0, oddata.shape[0]):
for i in range(0, 50):
veh_num = oddata1[i,0]
stime = oddata1[i,3]
etime = oddata1[i,5]
bianhao = oddata1[i,-1]
arr_data = bianhao(arr_data, veh_vector, location_time_vector, veh_num, stime, etime, bianhao)
如上所实例,函数名为bianhao;而后面的变量名中也有一个相同的bianhao。
改正:
%%time
arr_data = np.array([[0]*df.shape[0]])
import numpy as np
@np.vectorize
def get_bianhao(arr_data, veh_vector, location_time_vector, veh_num, stime, etime, bianhao):
if (veh_vector == veh_num) & (location_time_vector <= etime) & (location_time_vector >= stime):
return bianhao
else:
return arr_data
veh_vector = df1[:,1]
location_time_vector = df1[:,6]
# for i in range(0, oddata.shape[0]):
for i in range(0, 50):
veh_num = oddata1[i,0]
stime = oddata1[i,3]
etime = oddata1[i,5]
bianhao = oddata1[i,-1]
arr_data = get_bianhao(arr_data, veh_vector, location_time_vector, veh_num, stime, etime, bianhao)