2012-11-22 2 views
10

numpy.append 함수를 사용하는 데 문제가 있습니다. 내가 그러나, 내 오류가 folowing 재현 코드의 더 큰 조각의 일환으로 다음과 같은 기능을 썼다 :함수 사용법 numpy.append

data = [ 
     [ 
      '3.5', '3', '0', '0', '15', '6', 
      '441', 'some text', 'some more complicated data' 
     ], 
     [ 
      '4.5', '5', '1', '10', '165', '0', 
      '1', 'some other text', 'some even more complicated data' 
     ] 
     ] 

def GetNumpyArrey(self, index): 
    r = np.array([]) 
    for line in data: 
     np.append(r, float(line[index])) 

    print r 

인덱스 < 6. 결과는 다음과 같습니다

>> [] 

무엇 내가 틀렸어?

고맙습니다.

+2

http://stackoverflow.com/questions/5064822/numpy-how-to-add-items-into-an-array – avasal

+0

@BrenBarn이 지적했듯이 여기에'numpy.append'를 사용할 이유가 없습니다. 가장 효율적인 방법은 처음에'r'을'len (data)'에 할당하는 것입니다. 길이를 미리 모르는 경우 (예 : 파일 읽기) @ BrenBarn의 제안에 따라 목록을 만들고 배열로 변환하는 것이 가장 좋습니다. – DaveP

답변

24

목록 append 메서드와 달리 numpy의 append은 내부에 추가되지 않습니다. 여분의 요소가 추가 된 새 배열을 반환합니다. 따라서 r = np.append(r, float(line[index]))을해야합니다.

이런 식으로 numpy 배열을 구축하는 것은 비효율적입니다. 파이썬 목록으로 목록을 작성한 다음 끝에 numpy 배열을 만드는 것이 좋습니다.

+0

감사합니다. 그것은 매우 유용했습니다! –