为什么Python将它舍入为整数而不是浮点数?

时间:2018-03-15 14:24:44

标签: python

我有这样的代码,其中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

2 个答案:

答案 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))