如何在Python中打开文本文件并创建数组
我有一个名为Orbit1的文本文件,我需要帮助打开它,然后创建三个单独的数组。我是Python新手,在这方面一直有困难。下面是我的文本文件的前几行。包括标题在内共有1112行如何在Python中打开文本文件并创建数组,python,arrays,Python,Arrays,我有一个名为Orbit1的文本文件,我需要帮助打开它,然后创建三个单独的数组。我是Python新手,在这方面一直有困难。下面是我的文本文件的前几行。包括标题在内共有1112行 Year Month Day Hour Minute Second Millisecond Longitude Latitude Altitude 2019 3 17 5 55 55 0 108.8730074 50.22483151 412.6226898 2019
Year Month Day Hour Minute Second Millisecond Longitude Latitude Altitude
2019 3 17 5 55 55 0 108.8730074 50.22483151 412.6226898
2019 3 17 5 56 0 0 108.9895097 50.53642185 412.7368197
2019 3 17 5 56 5 0 109.1078294 50.8478274 412.850563
2019 3 17 5 56 10 0 109.2280101 51.15904424 412.9640113
2019 3 17 5 56 15 0 109.3500969 51.47006828 413.0772319
2019 3 17 5 56 20 0 109.4741362 51.78089533 413.1901358
2019 3 17 5 56 25 0 109.6001758 52.09152105 413.3025291
2019 3 17 5 56 30 0 109.728265 52.40194099 413.414457
2019 3 17 5 56 35 0 109.8584548 52.71215052 413.5259984
2019 3 17 5 56 40 0 109.9907976 53.02214489 413.6371791
我希望打开这个文本文件来创建三个数组,分别称为lat[N]、long[N]和time[N],其中N是文件中的行数。我最终希望能够确定任意点的纬度、经度和时间。例如,如果工作正常,lat[0]
应返回50.22483151。此外,目前,我需要将时间转换为十进制小时,然后创建数组
基本上,我需要帮助打开这个文本文件,然后创建三个数组
我尝试过用这种方法打开文件,但在尝试写入数组时遇到了问题,我想我可能无法正确打开文件
import numpy as np
file_name = 'C:\\Users\\Saman\\OneDrive\\Documents\\Orbit 1.txt'
data = []
with open(file_name) as file:
next(file)
for line in file:
row = line.split()
row = [float(x) for x in row]
data.append(row)
试试这个解决问题最简单的方法是使用熊猫:
import pandas as pd
df = pd.read_table('Orbit 1.txt', sep=r'\s+')
df['Longitude']
#0 108.873007
#1 108.989510
#2 109.107829
#3 109.228010
#4 109.350097
#5 109.474136
#6 109.600176
#7 109.728265
#8 109.858455
#9 109.990798
一旦获得Pandas数据帧,您可能还想将其用于其余的数据处理。考虑使用
Pandas.read_table()
@DYZ,这对我不起作用。它给了我这个输出Year\tMonth\tDay\tHour\tMinute\tSecond\tMills\tLength\tTitude\tTalitude 0 2019\t3\t17\t5\t5\t5\t0\t108.8730074\t50.224。。。1 2019\t3\t17\t5\t56\t0\t0\t108.9895097\t50.5364。。。2 2019\t3\t17\t5\t56\t5\t0\t109.1078294\t50.8478。。。3 2019\t3\t17\t5\t56\t10\t0\t109.2280101\t51.159。。。4 2019\t3\t17\t5\t56\t15\t0\t109.3500969\t51.470。。。 ... 1111行×1列
我不明白为什么一年后它会把t放在所有东西的前面你看过函数文档了吗?您必须通过选项sep=r“\s+”
。因此,我以前遇到过这个问题,我仍然不确定发生了什么。我得到了这个错误<代码>索引器回溯(最后一次调用)15 data=line.split()16 print(data)-->17 Lat.append(data[8])18 Long.append(data[7])19 hrs=int(data[3])索引器:列表索引超出范围这对经纬度非常有用,谢谢你!我现在正在尝试将时间转换为十进制小时,这是我正在尝试使用的代码,但我不断收到错误“invalid literal for int(),以10为基数:“Hour”time=df[int('Hour')+int('Minute')/60+int('Second')/3600+int('millissecond')/3600000]
您有什么建议将时间转换为十进制小时而不出现错误吗?df['Hour']+df['Minute']/60+…
import pandas as pd
df = pd.read_table('Orbit 1.txt', sep=r'\s+')
df['Longitude']
#0 108.873007
#1 108.989510
#2 109.107829
#3 109.228010
#4 109.350097
#5 109.474136
#6 109.600176
#7 109.728265
#8 109.858455
#9 109.990798