Wildwolf1995

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编辑  收藏  举报