nomes das colunas de análise numpy.genfromtxt com caracteres de escape incorretamente

votos
1

Estou a ler grandes quantidades de dados de um arquivo CSV com o seguinte código

data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True)

De acordo com a docstring, usando os nomes de palavra-chave com o valor True, implica que os dados são estruturados em uma matriz estruturada 1d onde as colunas do arquivo CSV original são acessíveis através de seus nomes, tomadas a partir da primeira linha do arquivo.

Enquanto isso funciona, em geral, parece que as seqüências de nome não são analisados ​​como seria de esperar como strings matérias. corda r'some'

por exemplo, a string a partir do arquivo

s = LNAGain(Corner=nom_8;modelFiles=model.paths.scs;cur_ctl_counter=1;vsupply=1.65;temperature=85) Y
#correct

é analisado como

s=LNAGain_Cornernom_8modelFilesmodelpathsscscur_ctl_counter1vsupply165temperature85_Y
#wrong

Então, ele perde a igual sinais, ponto e vírgula e parênteses. Existe uma maneira de forçar a leitura como corda cru? Ou este é um bug no método numpy?

Se Acabei de ler a linha com

inputfile.readline() 

tudo é analisado corretamente / como eu quero.

desde já, obrigado!

Publicado 14/01/2015 em 09:23
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Eu tenho em torno de meu problema usando o módulo de pandas para a importação CSV, em vez de numpy. veja http://pandas.pydata.org

Parece para analisar o arquivo de texto contendo os dados de uma forma muito mais inteligente.

Assim, em vez de fazer

import numpy as np
data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True)

eu faço

import pandas as pd
data = pd.read_csv(inputfile.name, sep=',')

e está tudo bem. :)

É claro que eu tinha de editar o meu código para usar os métodos pandas para lidar com o objeto de dados, mas muda onde menor.

por exemplo, para acessar uma coluna de dados que eu usaria

data[data.columns[column_index]]

ao invés de

data[data.dtype.names[column_index]
Respondeu 29/01/2015 em 14:40
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more