it-swarm.com.de

Numpy.dot TypeError: Array-Daten können nicht von dtype ('float64') in dtype ('S32') gemäß der Regel 'safe' umgewandelt werden.

Warum erhalte ich diese Fehlermeldung bei der Verwendung von np.dot(a,b.T):

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

a und b sind vom Typ 'numpy.ndarray'. Meine numpy-Version ist 1.11.0.

19
user2212461

Nehmen Sie einfach die Eingabe von BrenBarn und Warren Weckesser, um einen Code-Ausschnitt bereitzustellen, der ausgeführt werden soll (indem Sie Ihre Zeichenfolgen in Float konvertieren):

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

oder einfacher als von @JLT vorgeschlagen

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

Aber wie Warren Weckesser schon sagte, sollten Sie die Typen des Arrays überprüfen, höchstwahrscheinlich enthält einer bereits Floats.

18
Romeo Kienzler

Versuchen Sie, das gesamte numpy-Array in float umzuwandeln. __ Beispiel:

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