2017-10-06 6 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]

코드 :

import numpy as np 
import math 
import datetime 

filename = 'zarya2.txt' 
a = np.genfromtxt(filename) 

evens = [] 
odds = [] 
for i in range(20): #2913*2 
    if np.mod(i,2) == 0: 
     evens.append(a[i,:]) 
    else: 
     odds.append(a[i,:]) 

oddsArray = np.asarray(odds) 
evensArray = np.asarray(evens) 

'Four Digit Year' 
longYearDig = evensArray[:,3] /1000 
print 'longYearDig', longYearDig 

for i in range(len(longYearDig)): 
    pointyearDig = math.floor(longYearDig[i]) 
print 'pointyearDig', pointyearDig 


for i in range(len(pointyearDig)): 
    yearDig = int(pointyearDig[i]) 
print 'yearDig', yearDig 


#yearDigit = 98 

for i in range(len(yearDig)): 
    if yearDig > 17: 
     year = yearDig + 1900 
    else: 
     year = yearDig + 2000 

print('year', year) 

출력 :

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는 aarry가 아닌 float입니다. len()을 호출 할 수 없습니다. 나는 약간 혼란 스럽다. 왜 .0을 결국 원하니? –

+0

나는 .0을 원한다. 정수로만 98을 원한다. 내 질문을 명확하게 업데이트 할 것이다. – Rose

답변

1

그냥 사용 numpy의 플로어 함수

각 요소에 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)