2017-07-04 1 views
-1

J'utilise la fonction de diffusion numpy pour mapper un ensemble de valeurs sur un ensemble de coordonnées. Les valeurs peuvent être de type hétérogène, y compris les primitives. Mon problème est que la fonction de diffusion convertit les types primitifs dans certaines conditions. Voir par exemple ce code:conversion de type numpy pendant la diffusion

In [11]: x = np.array([1]) 
    ...: y = np.array(['test', 10]) 
    ...: list(np.broadcast(x, y)) 

Out[11]: [(1, 'test'), (1, '10')] 

Le 10 entier qui a été adoptée dans la valeur y a été convertie en une chaîne « 10 » après la diffusion.

Est-il possible d'empêcher ce comportement de coulée d'une manière ou d'une autre?

+1

Il n'est pas converti lors de la diffusion, il est converti à l'initialisation 'y'. Imprimer 'y' après votre deuxième ligne. –

Répondre

2

En effet, lorsque vous faites

y = np.array(['test', 10]) 

le résultat est

array(['test', '10'], 
    dtype='<U4') 

Si vous y = np.array(['test', 10], dtype=object) le résultat sera que vous le souhaitez.