2013-06-21 2 views
2

좋아요, 주제에 대한 연구가 많이 있었지만 NumPy는 균질 행렬만을 지원합니다.NumPy가 문자열과 수레로 행렬을 생성하는 방법

저는 코퍼스 언어학 데이터를 처리하기 위해 NLTK 패키지로 파이썬과 함께 작업하고 있으며 단순히 '열 이름'과 다른 실제 문자열 (부동 소수점)으로 다른 문자열로 행렬을 만들고 싶습니다. 행렬의

지금까지 필자는 두 개의 행렬을 만들었습니다. 하나는 문자열이 있고 다른 하나는 수레가있는 행렬이었습니다. 그리고 vstack을 사용하여 두 행렬을 서로 겹치게했습니다. 누적 된 행렬의 새로운 '행렬'을 사용하여 NumPy의 savetxt() 메소드를 사용하기 전까지는 괜찮 았지만 훌륭했습니다. 그러나 행렬은 동 질적이 아니므로 행렬과 유사하지 않으므로 .csv 파일을 작성하지 않습니다. FML.

실제 데이터 포인트를 다루는 모든 멋진 방법에 대해 NumPy를 사용하고 싶지만 행렬 맨 위에 놓을 문자열의 배열을 얻을 수 없습니다. .csv로 변합니다. 어떤 아이디어? 파이썬의 다차원 배열에 대한 목록 접근법을 만들어이 모든 것을 다시 시도 할 필요가 없다. 당신은 사용할 수

import os.path 
import sys 
import nltk 
from numpy import * 
from nltk.corpus.reader import CHILDESCorpusReader 
from nltk.probability import ConditionalFreqDist, FreqDist 

n_rows = 12 
n_cols = 19 
init_row = 0 
init_col = 0 
neg_words = ["Age", "MLU", "All Tokens","no","not","don't","can't","won't","isn't","wasn't","wouldn't","shouldn't","couldn't","didn't","haven't","aren't","haven't","hasn't","doesn't"] 

Matrix_headers = array(range(len(neg_words)), dtype='a12') 
Matrix_values = zeros(n_rows*n_cols).reshape((n_rows, n_cols)) #the matrix with the data points (floats) 

for entry in range(len(neg_words)): 
    Matrix_headers[entry] = neg_words[entry] 

p = neg_words 
q = Matrix_values 
Matrix = vstack([p,q]) 


out_name = "/Users/nicholasmoores/Documents/Research/neg_table.csv" 
savetxt(out_name, Matrix, fmt='%.3e',delimiter = "\t") 

raw_input("\n\nPress the enter key to exit.") 
+3

에 유사

>>> ym['heads'] array(['Age', 'MLU', 'All Tokens', 'no', 'not', "don't", "can't", "won't", "isn't", "wasn't", "wouldn't", "shouldn't", "couldn't", "didn't", "haven't", "aren't", "haven't", "hasn't", "doesn't"], dtype='|S14') 
? –

+0

예 팬더를 사용해야합니다. –

+0

팬더를 다운로드하고 설치할 수있게되어서 팬더 DataFrame을 사용해 보겠습니다. 필자의 모든 요지는 R의 DataFrame에이 코드를 넣고 싶지 않았기 때문에 팬더가 존재한다는 사실에 정말 흥분했습니다. –

답변

2

structured array

예 : 여기

코드입니다

ym['heads'] = neg_words 

헤더에 액세스하려면 : 헤더 값을 설정하려면

>>> ym = np.zeros(len(neg_words), dtype=[('heads','a14'),('vals','f4',(n_rows,))]) 

array([('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), 
     ('', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])], 
     dtype=[('heads', 'S14'), ('vals', '<f4', (12,))]) 

: 0 액세스 값

어떻게`DataFrame``pandas` '에 대한
ym['vals'] 
관련 문제