我有这样的代码,其中ROP取自excel(浮点数)。循环val和count之后是浮点数,并以某种方式Python将结果舍入为整数。怎么避免这个?
ROP = df['ROP fph'].values.tolist()
ROP = np.array(ROP)
ROPav = np.array([0]*len(ROP))
ave_width = 100
for i in range(len(ROP)):
val = 0
count = 0
for j in range(ave_width):
if i-j >= 0:
val += ROP[i-j]
count += 1
if i+j < len(ROP):
val += ROP[i+j]
count += 1
ROPav[i] = val/count
例如,这里是一行的结果:
val = 16326.239
count = 200
val/count = 81.632
ROPav[i] = 81
答案 0 :(得分:2)
numpy.array的文档说:
dtype:data-type,optional
阵列所需的数据类型。如果没有给出,则类型将 被确定为保持物体所需的最小类型 序列。此参数只能用于“upcast”数组。对于 向下转换,使用.astype(t)方法。
您初始化为:
ROPav = np.array([0]*len(ROP))
这使得它成为一个int数组。尝试改为
ROPav = np.array([0.0]*len(ROP))
答案 1 :(得分:0)
调用np.array
时,您必须指定数据类型或使用具有正确数据类型的值。尝试:
ROPav = np.array([0.0]*len(ROP))