2017-10-06 62 views
0

我想要舍入数组中的值longYearDig,然后将浮点数值转换为整数。但是,当我输入一个有10个值的数组longYearDig时,我只得到一个浮点数pointyearDig在For循环中输入一个数组,但只浮出一个浮点数

我所投入: longYearDig = [ 98.32428472 98.32433235 98.32445675 98.32451913 98.32451913 98.32458141 98.32464367 98.32489267 98.32501715 98.32545376]

我想出来什么:

yearDig = [98, 98, 98, 98, 98, 98, 98, 98, 98, 98]

year = [1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998]

代码:

输出:

longYearDig [ 98.32428472 98.32433235 98.32445675 98.32451913 98.32451913 98.32458141 98.32464367 98.32489267 98.32501715 98.32545376]

pointyearDig 98.0

File "/Users/mrmenzel/Desktop/orbits/zaryaISSdataTLE", line 93, in for i in range(len(pointyearDig)):

TypeError: object of type 'float' has no len()

+1

该错误是相当自我解释。 pointyearDig是一个不是一个float的float,你不能对它调用len()。我有点困惑,为什么你最后想要.0? –

+0

我不想要.0我只想要98作为一个整数,我会更新我的问题更清晰。 – Rose

回答

1

只需使用来自numpy的地板功能

longYearDig = evensArray[:,3] /1000 
print 'longYearDig', longYearDig 
pointyearDig =np.floor(longYearDig) 

它会将floor函数应用到每个元素并返回您想要的数组。 然后,你可以这样结束:

year = [] 
for i in range(len(pointyearDig)): 
    if pointyearDig[i] > 17: 
     year.append(int(pointyearDig[i]) + 1900) 
    else: 
     year.append(int(pointyearDig[i]) + 2000) 

另一种解决方案:

您可以使用从蟒蛇//运算符,它给你划分的地面部分。你可以压缩你的代码,然后有:

longYearDig = np.array(evensArray[:,3]) // 1000 
year = [] 
for i in range(len(longYearDig)): 
    if longYearDig[i] > 17: 
     year.append(longYearDig [i] + 1900) 
    else: 
     year.append(longYearDig [i] + 2000)