2016-08-15 3 views
0

Je suis en train de lire le fichier suivant et j'ai essayé d'utiliser numpy pour charger les données:noms de lecture avec trait d'union manquant genfromtxt

#Frame [email protected][email protected] [email protected][email protected] [email protected][email protected] 
     1     0     0      0 
     2     1     0      0 
     3     0     0      0 
     4     0     0      0 
     5     0     0      0 

Si je lis les noms de champs de la 1ère ligne commençant par la première valeur, les noms manquent un caractère '-' du milieu:

f1 = np.genfromtxt(fileName1, dtype=None, names=True) 
labels = f1.dtype.names[1:] 
print labels 

> ('HIE_21OPHE_32NH', 'THR_20OPHE_32NH', 'HIE_21ND1PHE_32NH') 

au lieu de HIE_21O-PHE_32NH, THR_20O-PHE_32NH, HIE_21ND1-PHE_32NH

Pourquoi? Comment puis-je récupérer le trait d'union?

+0

L'action par défaut modifie les noms qu'ils peuvent fonctionner comme des noms d'attributs (pour 'recarrays'). – hpaulj

Répondre

2

Utilisez l'argument deletechars='':

In [15]: f1 = np.genfromtxt('hyphens.txt', dtype=None, names=True, deletechars='') 

In [16]: f1 
Out[16]: 
array([(1, 0, 0, 0), (2, 1, 0, 0), (3, 0, 0, 0), (4, 0, 0, 0), (5, 0, 0, 0)], 
     dtype=[('Frame', '<i8'), ('[email protected][email protected]', '<i8'), ('[email protected][email protected]', '<i8'), ('[email protected][email protected]', '<i8')]) 

In [17]: f1.dtype.names 
Out[17]: 
('Frame', 
'[email protected][email protected]', 
'[email protected][email protected]', 
'[email protected][email protected]')