2017-07-16 1 views
0

Je suis assez nouveau avec numpy.Attribution de tableau Python Numpy int int

Comme le montre ci-dessous, lorsque je tente de lancer les valeurs numériques de chaînes en nombres entiers, il ne semble pas « coller », comme ci-dessous:

>> import numpy as np 
>>> a = np.array([['a','1','2'],['b','3','4']]) 
>>> a[:,1:3].astype(int) 
array([[1, 2], 
     [3, 4]]) 
>>> a[:,1:3] = a[:,1:3].astype(int) 
>>> a 
array([['a', '1', '2'], 
     ['b', '3', '4']], 
     dtype='<U1') 

Comment puis-je convertir les valeurs de chaîne à ints dans le tableau?

+3

Les tableaux numériques sont homogènes, il n'y a pas de tableaux de types mixtes (à l'exception des tableaux 'object' mais ce n'est pas ce que j'appellerais une recommandation!). Donc, la question que vous devez vous poser est la suivante: quelle valeur entière devrait avoir «a» ou «b»? – MSeifert

Répondre

2

Vous devez d'abord changer la dtype du tableau complet object afin qu'elle contienne les chaînes et entiers:

a = a.astype(object) 
a[:,1:3] = a[:,1:3].astype(int) 
print(a) 
> [['a' 1 2] 
    ['b' 3 4]] 

Bien noter que de meilleures solutions peuvent exister, par exemple en utilisant pandas, en utilisant des colonnes de différents types.