python库-numpy

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)

参数iterable可以是 list 或者 iterator(迭代器),Python中的获取迭代器:A.iteritems ();迭代器:对于不同的容器,遍历手段肯定不一样,迭代器就是让我们有一种统一的手段->面向迭代器编程。
cmp 是带两个参数的比较函数;
key   是带一个参数的函数;
reverse为False(升序)或者True(降序);

举例说明
(1) 用cmp函数排序

>>> 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)]

(2)用key函数排序

>>> 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)]

(3)用reverse排序

>>> sorted(list1,reverse = True) [('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]

(4)用 operator.itemgetter 函数排序

>>> 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)]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值