2016-11-30 39 views
1

numpy.genfromtxt을 사용하여 txt 파일에서 ndarray을 만들었습니다.numpy.genfromtxt를 사용하여 ndarray에 열 삽입

data = np.genfromtxt(fname, 
        skip_header =1, 
        dtype = [('X','f'),('Y','f'),('Z','f'),('V', 'i'),('T', 'i')], 
        usecols = (0,1,2,4,5)) 

내가 지금 4 열 (나는 V라는 하나) 복제하고 직후에 배치하려고 : 나는으로 데이터를 읽어 실행하고

2505000 
10.316  1.936  0.025 0 15 0 0 
10.316  1.937  0.028 0 15 0 0 
10.316  1.943  0.028 0 15 0 0 
10.316  1.954  0.022 0 9 58 0 
10.316  1.955  0.026 0 9 58 0 

:처럼 txt 파일 보인다 그 자체 (마지막으로 T 열 앞에).

data['V']을 수행하여 열을 복사 할 수 있지만이 복사본을 VT (4 번째 및 5 번째 열) 사이에 어떻게 삽입합니까? numpy.insert을 살펴 보았지만 인덱스 (obj 인수)를 지정하는 방법을 모르겠습니다. 나는 운이없는 numpy.insert(data_copy, data_copy['T'],data_copy['V'])으로 시도했다 (나는 IndexError: index 61 is out of bounds for size 20를 받았다).

+0

당신은 추가 된 필드와 새로운 DTYPE을해야하고, 원래 배열에서 필드 이름에 값을 복사 새로운 것. – hpaulj

+1

'from numpy.lib import recfunctions'을보십시오. http://stackoverflow.com/a/27952861/901925 – hpaulj

+0

@ hpaulj 덕분에, 필자는 삽입 위치를 지정할 수는 없지만 recfunctions.append_fields 및 recfunctions.drop_fields를 결합하여 해결했습니다. 다른 솔루션이 나오지 않고 답글로 의견을 보내려는 경우 기꺼이 받아들입니다. – umbe1987

답변

1

추가 된 필드로 새 dtype을 만들고 필드 이름별로 값을 원래 배열에서 새 배열로 복사해야합니다.

recfunctions이 (및 관련 작업을) 할 수있는 기능이 있습니다

from numpy.lib import recfunctions 

numpy dtype error - (structured array creation)