python笔记——遇到一些报错
1.TypeError: data type not understood
File "C:\Users\81476\PycharmProjects\untitled1\k-临近算法\kNN.py", line 33, in file2matrix
return_mat = zeros((number_of_lines), 3) #多维矩阵要加括号
TypeError: data type not understood
多维数据要用多层括号来实现,这里正确的写法应为
zeros((number_of_lines, 3))
遇到一个记录一个
2.TypeError: 'dict_keys' object does not support indexing
python2.7和python3中dict.keys()功能不同,
在python2.x中,dict.keys()返回一个列表,
在python3.x中,dict.keys()返回一个dict_keys对象,更像集合
修改方法
my_tree.keys()[0]--->list(my_tree.keys())[0]
3.AttributeError: type object 'str' has no attribute 'name'
原代码为
if type(second_dict[key])._name_ == 'dict': #这个地方name前后一定要双下划线,否则会报错 #如果写成 if type(second_dict[key]) == 'dict': #不会报错,但判断一直是False,得不到想要的结果 #正确的写法为 if type(second_dict[key]).__name__== 'dict':
4.TypeError: only length-1 arrays can be converted to Python scalars
from math import log from numpy import * p1_vect = log(p1_num/p1_denom) p0_vect = log(p0_num/p0_denom)
从网上查询原因是因为在numpy库有自定义的log函数,与从math库引用的log函数不同,所以此处应将math去掉
from numpy import * p1_vect = log(p1_num/p1_denom) p0_vect = log(p0_num/p0_denom)
5.TypeError: 'range' object doesn't support item deletion
原因:python3.x range返回的是range对象,不返回数组对象,需要加转换列表的操作
training_set = list(range(50));
6.ValueError: Masked arrays must be 1-D
#原代码为 re_draw.a.scatter(re_draw.rawDat[:,0], re_draw.rawDat[:,1], s = 5) #修改为 re_draw.a.scatter(re_draw.rawDat[:,0].tolist(), re_draw.rawDat[:,1].tolist(), s = 5)
posted on 2019-01-11 12:34 Wildwolf1995 阅读(782) 评论(0) 编辑 收藏 举报