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)