kNN算法
一、在自学kNN算法时,遇到了tile函数,现在总结一下该函数用法:
1、np.tile(A,x)->将A一维x次重复输出。
2、np.tile(A,(y,x))->将Ay维x次重复输出
eg:
A = array ([1,2],[3,4])
np.tile(A,2) = ([1,2,1,2],[3,4,3,4])
np.tile(A,(2,3)=([1,2,1,2,1,2],[3,4,3,4,3,4]
[1,2,1,2,1,2],[3,4,3,4,3,4])
可以看出tile(A,2)=tile(A,(1,2))
二、A.shape shape数组存储矩阵A的行和列。
shape[0]存行数、shape[1]存列数
三、np.sum(A,axis)
axis=0 ->求每列之和,存入一维数组
axis=1->求每行之和,存入一维数组
四、A.argsort(A,axis) 排序 数组存储索引
A->升序
-A->降序
axis=0 对列 axis=1 对行
五、A.get(key,default),查找key,存在则返回value,如果不存在则返回default值
六、sorted函数
这个函数应该单独开一篇新的博客,但是今天时间有限,先放在这里,以后会重写。
sorted(A)和A.sort()最大的区别在于sort会改变A,而sorted不改变A而生成新的容器。
这里要引入一个operator.itemgetter(num)函数,用于表示获取对象的哪一维的数据,而且值得注意的是,itemgetter函数不是获取值而是定义了一个新函数:
eg:
A=[1,2,3]
b=operator.itemgetter(2)
b(A)=3;
c=operator.itemgetter(1,2)
c(A)=(2,3)
sorted(iterable,cmp,key,reverse)
>>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] >>> sorted(list1,cmp = lambda x,y: cmp(x[0],y[0])) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)] >>> sorted(list1,cmp = lambda x,y: cmp(x[1],y[1])) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]
(3)用reverse排序>>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] >>> sorted(list1,key = lambda list1: list1[0]) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)] >>> sorted(list1,key = lambda list1: list1[1]) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]
(4)用 operator.itemgetter 函数排序>>> sorted(list1,reverse = True) [('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]
>>> from operator import itemgetter >>> sorted(list1, key=itemgetter(1)) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)] >>> sorted(list1, key=itemgetter(0)) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]