在For循环中输入一个数组,但只得到一个浮点ou

2024-09-30 08:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图对数组longYearDig中的值进行舍入,然后将值从浮点转换为整数。然而,当我输入一个包含10个值的数组时,我只得到一个浮点数

我要说的是: 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()


Tags: inimportforlennprangemath数组
1条回答
网友
1楼 · 发布于 2024-09-30 08:28:35

只需使用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)

相关问题 更多 >

    热门问题