我尝试在基于 python3 的 Crab(开源推荐系统)上运行测试。然后出现错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Dennis/anaconda/lib/python3.5/site-packages/scikits/crab/datasets/base.py", line 201, in load_sample_movies
data_songs[u_ix][i_ix] = float(rating)
ValueError: could not convert string to float: "b'3.0'"
我尝试使用“decode()”来转换字符串,但它不起作用:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Dennis/anaconda/lib/python3.5/site-packages/scikits/crab/datasets/base.py", line 202, in load_sample_movies
rating = rating.decode('utf-8')
AttributeError: 'numpy.str_' object has no attribute 'decode'
任何帮助将不胜感激!
最佳答案
问题在于 rating
是字符串中的字符串,因此当您尝试将 "b'3.0'"
之类的字符串转换为 float 时,它会给出一个valueError
因为你前面还有 b
无法转换为 float。
我想您需要在 '3.0'
前面进行字节编码,所以一种方法是评估 rating
以在类型转换之前将其从字符串转换为字节它变成一个 float (注意,eval
可能有一些安全问题)。
>>> type(eval(rating))
<class 'bytes'>
>>> data_songs[u_ix][i_ix] = float(eval(rating))
关于python - 错误 : 'Numpy.str_' object has no attribute 'decode' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38790126/