Numpy.dot TypeError: не может передавать данные массива из dtype ('float64') в dtype ('S32') в соответствии с правилом 'safe'

Почему я получаю эту ошибку при использовании np.dot(a,b.T):

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

a и b имеют тип 'numpy.ndarray'. Моя версия numpy - 1.11.0.

Ответы

Ответ 1

Просто беря данные от BrenBarn и Warren Weckesser, чтобы предоставить фрагмент кода, который должен запускаться (путем преобразования ваших строк в float):

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

или проще, как предложено @JLT

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

Но, как уже сказал Уоррен Укенссер, вы должны проверить типы массива, скорее всего, в нем уже есть поплавки.

Ответ 2

Попробуйте преобразовать весь массив numpy в float Пример: Train = Train.astype(float) Train_Target = Train_Target.astype(float)