2017-10-06 65 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)