2017-01-18 1 views
-1

실험으로 데이터 세트를 생성 중입니다. 일반적으로 n x 4 차원 (n 행, n > 10004 열) 인 CSV 데이터 세트로 끝납니다. 그러나 데이터 수집 프로세스의 결과로 인해 일반적으로 처음 몇 개의 행과 마지막 몇 개의 행에는 2 또는 3 개의 열만 있습니다. 따라서 데이터 세트는 다음과 같이 보입니다.Numpy로 데이터를 가져올 때 특정 행 제외

8,0,4091 
8,0, 
8,0,4091,14454 
10,0,4099,14454 
2,0,4094,14454 
8,-3,4104,14455 
3,0,4100,14455 
.... 
.... 
14,-1,4094,14723 
0,3,4105,14723 
7,0,4123,14723 
7, 
6,-2,4096, 
3,2, 

위에서 볼 수 있듯이 처음 두 행과 마지막 세 행에는 예상 한 4 개의 열이 없습니다. numpy로이 파일을 가져 오려고하면 np.loadtxt(filename, delimiter = ','), 오류가 발생합니다. 4 열 미만 (이 경우 처음 2 행 및 마지막 3 행) 인 행을 제거하면 가져 오기가 정상적으로 작동합니다. 두 가지 질문 : 1. 일반적인 가져 오기 작업을하지 않는 이유는 무엇입니까? 이 가져 오기에서 정확한 오류가 무엇인지 모르겠습니다. 즉, 모든 행에서 같은 수의 열이 문제가되지 않는 이유는 무엇입니까? 2. 임시 해결 방법으로 numpy로 파일을 가져 오는 동안 처음 두 행을 무시하는 방법을 알고 있지만 무시할 수있는 행의 고정 된 수를 선택할 수있는 간단한 방법이 있습니까?

참고 : 이것은 numpy 배열에서 고유 한 행을 찾는 것이 아닙니다. 각 행에 포함 된 열의 수가 일정하지 않은 csv 데이터를 가져 오는 방법에 대해 자세히 설명합니다.

+0

가능한 중복 (http://stackoverflow.com/questions/16970982/find-unique-rows-in-numpy-array) –

+0

@JosephFarah 이것은 numpy 배열에서 고유 한 행을 찾는 것이 아닙니다. 이는 비 균일 구조 (행, 열)가있는 CSV 파일을 가져 오는 것입니다. 나는 심지어 지금은 질적 인 배열을 만들 수 없다. – deserthiker

답변

1

귀하의 질문은 내가이 기본 동작 이유에 대해 확실하지 않다 Using genfromtxt to import csv data with missing values in numpy

1) ~ (중복)과 유사하다.

  • 사용자에게 CSV 파일이 손상되었을 수 있음을 경고 할 수 있습니다.
  • 배열을 최적화하고 여러 개의 열 길이 대신 N x M이 될 수 있습니다.

2) numpy의 genfromtext를 사용하십시오. 이를 위해서는 미리 올바른 열 수를 알아야합니다.

data = numpy.genfromtxt('data.csv', delimiter=',', usecols=[0,1,2,3], invalid_raise=False) 

희망이 있습니다.

+0

이것은 여전히 ​​나에게 오류를 준다 :'ValueError : 몇 가지 오류가 발견되었다! 3 번 행 대신에 4 번 행을 가져옵니다. 3 번 행 대신 4 번 행을 가져옵니다. – deserthiker

+0

지금 사용해보십시오, invalid_raise를 False로 설정하는 것을 잊었습니다! – rafaelvalle

+0

Nope은 여전히 ​​@rafaelvalle을 작동시키지 않습니다. 여전히 Get ValueError : 일부 오류가 발견되었습니다! 라인 # 3 (3 대신 4 개의 열이 있음) 라인 # 4 (3 대신 4 개의 열이 있음) ..... 흥미롭게도 매우 마지막에 다음과 같이 나타납니다. [[8. 0. 4091.] [ 0. 0.[8. 0. 4091.] [8. 0.]] (4, 3)' – deserthiker

1

당신은 끝에 선에게 처음 을 건너 뛸 수 있습니다 genfromtxt 사용할 수 있습니다 : [numpy.array에서 고유 행을 찾기]의

np.genfromtxt('array.txt', delimiter=',', skip_header=2, skip_footer=3)