在For循环中输入一个数组,但只浮出一个浮点数
我想要舍入数组中的值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()
只需使用来自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)
该错误是相当自我解释。 pointyearDig是一个不是一个float的float,你不能对它调用len()。我有点困惑,为什么你最后想要.0? –
我不想要.0我只想要98作为一个整数,我会更新我的问题更清晰。 – Rose