web-dev-qa-db-fra.com

Numpy.dot TypeError: impossible de convertir les données d'un tableau de dtype ('float64') vers dtype ('S32') conformément à la règle 'safe'

Pourquoi cette erreur survient-elle lorsque j'utilise np.dot(a,b.T):

TypeError: Cannot cast array data from dtype('float64') 
               to dtype('S32') according to the rule 'safe'

a et b sont du type 'numpy.ndarray'. Ma version de Numpy est 1.11.0.

19
user2212461

En prenant simplement les entrées de BrenBarn et Warren Weckesser pour fournir un extrait de code qui devrait être exécuté (en convertissant vos chaînes en float):

a = map(lambda x: float(x),a)
b = map(lambda x: float(x),b)
np.dot(a,b.T)

ou plus simple comme suggéré par @JLT

a = map(float,a)
b = map(float,b)
np.dot(a,b.T)

Mais comme Warren Weckesser l’a déjà dit, vous devriez vérifier les types du tableau, le plus probablement contient déjà des flottants.

18
Romeo Kienzler

Essayez de convertir tout un tableau numpy en float Exemple:

train = train.astype(float)
train_target = train_target.astype(float)
1
VishnuVardhanA