2013-06-06 3 views
1

저는 파이썬을 사용하여 데이터 조작 및 분석을 시도하고 있습니다. 나는 Python에 익숙하지 않고 함수의 csv 라이브러리를 사용하여 데이터를로드하는 데 몇 가지 문제가 있습니다. 내 코드 :이 때문에리스트가 대신 수레의 문자열로 저장했다는 사실에 일부가 될 수 이해하는 바로는csv reader를 사용하여 업로드하는 중에 오류가 발생했습니다.

Traceback (most recent call last): 
    File "/home/matthew/NumericalAnalysis.py", line 12, in <module> 
    x = data[:,0] 
TypeError: list indices must be integers, not tuple 

:

import csv 

out = open("data1.csv","rb") 
data = csv.reader(out) 
data = [row for row in data] 
x = data[:,0] 

오류를 생성합니다. 그렇다면 누군가 이걸로 나를 도울 수 있습니까?

답변

2

색인에 쉼표를 사용할 수 없습니다.

x = data[:4] 
x = data[2] 
+0

음, 적어도 numpy를 사용하면 인덱스에 쉼표를 사용할 수 있다고 생각합니다. >>> import numpy as npy >>> x = npy.mat ([[1,2,3], [4,5 , 6], [6,7,8]]) >>> x [0,0] >>> – user2457869

+0

@ user2457869 : 정확하게 numpy는 이들을 지원하지만 * 일반적인 파이썬리스트는 지원하지 않습니다. –

+0

그래, 고마워,하지만 지금은 탭 구분 오류가 있습니다 : out = open ("data1.csv", "rb") rawdata = csv.reader (out) rawdata = [row for row ] data = npy.mat (rawdata) time = data [:, 0] IndexError : 잘못된 색인 – user2457869

2

당신은 data 슬라이스 튜플 전달됩니다 :

data[:,0] 

쉼표는 튜플을 만드는 :,0, 하나이기는하지만 당신은 데이터 또는 슬라이스에서 요소를 원한다면 다음과 같이 진행 그건 자기가 스스로 할 수 없을 것입니다. 합법적 인 파이썬 구문이지만 extended slice이라고합니다. Numpy는 이러한 행렬을 지원하지만, 일반적인 파이썬리스트는 행렬을 지원하지 않습니다. 당신이 (당신의 확장 슬라이스가 NumPy와 두 개의 차원 행렬에 대해 어떻게 할 것인지되는) 모든 행의 모든 ​​ 열을 선택하고 싶었 경우 CSV를 읽을 때

이렇게 :

data = [row[0] for row in data] 

csv.reader() 개체가 제공하는 각 행의 첫 번째 열을 선택합니다.

관련 문제