2017-10-06 4 views
0

配列longYearDigの値を切り捨てて浮動小数点数から整数に変換しようとしています。しかし、私が10個の値を持つ配列を入力すると、longYearDigはfloatが1つだけpointyearDigになります。私が欲しい longYearDig = [ 98.32428472 98.32433235 98.32445675 98.32451913 98.32451913 98.32458141 98.32464367 98.32489267 98.32501715 98.32545376]Forループに配列を入力しますが、浮動小数点数は1つだけです

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はaarryではない浮動小数点で、len()を呼び出すことはできません。私はちょっと混乱しています、なぜあなたは.0を最後にしたいのですか? –

+0

私は.0を望んでいません。私はちょうど整数として98を私は明確にするために私の質問を更新したいです。 – Rose

答えて

1

だけで使用することを私は入れています何

floor関数from 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) 

別の解決策:

あなたがあなたの部門の床部分を与える、のpythonから//演算子を使用することができます は、その後、あなたは次のように終了することができます。

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) 
関連する問題