Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中打开文本文件并创建数组_Python_Arrays - Fatal编程技术网

如何在Python中打开文本文件并创建数组

如何在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

我有一个名为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    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