2017-10-05 6 views
1

짝수 라인에서만로드하려는 데이터의 txt 파일이 있습니다.np.loadtxt() txt 파일에서 다른 모든 행을로드하는 방법은 무엇입니까? Python

파이썬에서 루프를 사용하지 않고이를 수행 할 수있는 방법이 있습니까? 이 라인으로 파일 라인을 읽고

fname = 'load_even.txt' 

data = []; 
cnt = 1; 
with open(fname, 'r') as infile: 
    for line in infile: 
     if cnt%2 == 0: 
      data.append(line) 
     cnt+=1 

: 그것은 카운터 모듈로 연산자를 사용하는 것입니다 할

1 25544U 98067A 98324.28472222 -.00003657 11563-4 00000+0 0 10 
2 25544 51.5908 168.3788 0125362 86.4185 359.7454 16.05064833 05 
1 25544U 98067A 98324.33235038 .11839616 11568-4 57349-2 0 28 
2 25544 51.6173 168.1099.0187 273.4932 16.04971811 11 
1 25544U 98067A 98324.45674522 -.00043259 11566-4 -18040-4 0 32 
2 25544 51.5914 167.4317 0125858 91.3429 269.4598 16.05134416 30 
1 25544U 98067A 98324.51913017 .00713053 11562-4 34316-3 0 48 
2 25544 51.5959 167.1152.8179 273.5890 16.05002967 44 
1 25544U 98067A 98324.51913017 .00713053 11562-4 34316-3 0 59 
2 25544 51.5959 167.1152.8179 273.5890 16.05002967 44 

답변

1

np.loadtxt을() 줄을 건너 뛸 수있는 능력이없는 그들이 처음 N 선이 아니라면. 그렇지 않으면 np.genfromtxt()를 사용하는 것이 좋습니다 :

with open(filename) as f: 
    iter = (line for line in f if is_even_line(line)) 
    data = np.genfromtxt(iter) 

곳 is_even_line() 지정된 라인도의 경우, 부울을 반환하는 함수입니다. 귀하의 경우에는 이후 최초의 열은 선이 홀수인지 여부를 나타내는 또는, is_even_line()는 다음과 같이 수 : 나는 결국 어떻게

다음
def is_even_line(line): 
    return line[0] == '2' 
1

한 가지 방법은 다음과 같습니다

내 데이터 파일의 처음 10 선입니다 카운터 값이 짝수 행 번호에 해당하는 경우에만 각 행 다음에 카운터 cnt을 증가시키고 해당 행을 data에 추가하십시오.

numpy 배열의 특별한 경우를 들어 당신은이를 사용할 수 있습니다

import numpy as np 

fname = 'load_even.txt' 

data = []; 
cnt = 1; 
with open(fname, 'r') as infile: 
    for line in infile: 
     if cnt%2 == 0: 
      data.append(line.split()) 
     cnt+=1 

data = np.asarray(data, dtype = float) 
0

을하고있어 :

import numpy as np 
import matplotlib.pyplot as plt 


filename = 'zarya2000data.txt' 
a = np.genfromtxt(filename) 

evens = [] 
odds = [] 
N = 8 #30 #5826 #number of lines 


for i in range(N): #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) 

print 'evensArray', evensArray 
print'' 
print 'oddsArray', oddsArray 
print '' 
+0

방법에 대해 간단하게이 :'evens = a [0 :: 2]'와'odds = a [1 :: 2]'는 적절한 방법이며 더 빠를 것입니다. – jadsq