Numpy.dot TypeError: Cannot cast array data from d

2020-02-13 06:49发布

Why am I getting this error when using np.dot(a,b.T):

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

a and b are of type numpy.ndarray. My NumPy version is 1.11.0.

2条回答
家丑人穷心不美
2楼-- · 2020-02-13 07:39

Try converting whole numpy array into float Example:

train = train.astype(float)
train_target = train_target.astype(float)
查看更多
甜甜的少女心
3楼-- · 2020-02-13 07:51

Just taking the input from BrenBarn and Warren Weckesser to provide a code snippet which should run (by converting your strings to float):

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

or simpler as suggested by @JLT

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

But as Warren Weckesser already said, you should check the types of the array, most likely one already contains floats.

查看更多
登录 后发表回答