Numpy.dot TypeError:根据规则'safe',无法将数组数据从dtype('float64')转换为dtype('S32')

use*_*461 25 python arrays numpy

使用时为什么会出现此错误np.dot(a,b.T):

TypeError: Cannot cast array data from dtype('float64') 
               to dtype('S32') according to the rule 'safe'
Run Code Online (Sandbox Code Playgroud)

a和b的类型为'numpy.ndarray'.我的numpy版本是1.11.0.

Rom*_*ler 23

只需从BrenBarn和Warren Weckesser那里获取输入,就可以提供一个应该运行的代码片段(通过将你的字符串转换为float):

a = map(lambda x: float(x),a)
b = map(lambda x: float(x),b)
np.dot(a,b.T)
Run Code Online (Sandbox Code Playgroud)

或者@JLT建议的更简单

a = map(float,a)
b = map(float,b)
np.dot(a,b.T)
Run Code Online (Sandbox Code Playgroud)

但正如Warren Weckesser所说,你应该检查数组的类型,很可能已经包含了浮点数.

  • 不会映射(浮点数,a)更简单? (3认同)

小智 9

尝试将整个numpy数组转换为float示例:

train = train.astype(float)
train_target = train_target.astype(float)
Run Code Online (Sandbox Code Playgroud)