我真的很抱歉提出可能是愚蠢的问题,但我已经花了半天时间找不到合理的解决方案。 我有ASCII文件:
"X" "Z" "Y"
285807.2 -1671.056 2405.91
285807.2 -1651.162 2394.932
285807.2 -1631.269 2383.962
285807.2 -1611.375 2372.988
285807.2 -1591.481 2362.01
285807.2 -1571.587 2351.01
............................................. 〜1 000 000行
我正常地阅读它:
from astropy.io import ascii
data =ascii.read('C:\\Users\\Protoss\\Desktop\\Ishodnik1.dat')
print (data)
但我怎么能处理列?例如,对每行进行求和或仅从列Z和Y得到平均值等?据我所知,我必须将我的所有日期转换为浮动值列表除了标题,然后写入新的ASCII文件,不是吗?
答案 0 :(得分:0)
我做了什么。我将列分开并添加到不同的列表中。现在我可以访问不同的列:
import numpy as np
with open('C:\\Users\\Protoss\\Desktop\\Ishodnik.dat' ,'r') as f:
header1 = f.readline()
X_list=[]
Z_list=[]
V_list=[]
for line in f:
line = line.strip()
columns = line.split()
X = (float(columns[0]))
Z = (float(columns[1]))
V = (float(columns[2]))
X_list.append(X)
Z_list.append(Z)
V_list.append(V)
答案 1 :(得分:0)
可以将文件视为CSV并使用Sniffer
自动检测格式:
import csv
with open('C:\\Users\\Protoss\\Desktop\\Ishodnik1.dat', 'r') as f:
# Sniff to autodetect the format
dialect = csv.Sniffer().sniff(f.read(1024))
f.seek(0)
reader = csv.reader(f, dialect)
# Read line by line and store as list of tuples
data = []
header = tuple(next(reader))
for row in reader:
data.append(tuple(row))