k邻近算法实现数字识别中python问题

1:zeros()函数:

                             zeros(3)  : [0,0,0]

                             zeros((2,3)):两行三列元素为0的数组或可表示为zeros([2,3])

2:read(),readline()以及readlines()的区别:

                             read():作用读取文件的全部内容,并把读取到的结果返回为字符串类型

                             readline():作用每次只读取文件的一行内容,返回类型为字符串

                            readlines():作用读取文件的全部内容,返回类型为list

3 排序方法

                            sort():只针对lilst有效 ,python中

                            sorted():针对任何可迭代序列 sorted(iterable,cmp,key,reverse)cmp有两个参数表示按照那个进行排序,key表示一个函数,在每个元素比较前调用,reverse顾名思义就是翻转。python中

例1:list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] print(sorted(list1,cmp = lambda x,y: cmp(x[0],y[0])))#按照第一个位置的字母序排序 结果为[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]  print(sorted(list1,cmp = lambda x,y: cmp(x[1],y[1])))#按照第二个位置的数字序排序结果为[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

例2:list2=['nihao','ay'] print sorted(list1,key=lower())

                      argsort();numpy库中

                               

argsort函数
argsort函数返回的是数组值从小到大的索引值

Examples
--------
One dimensional array:一维数组

>>> x = np.array([3, 1, 2])
>>> np.argsort(x)
array([1, 2, 0])

Two-dimensional array:二维数组

>>> x = np.array([[0, 3], [2, 2]])
>>> x
array([[0, 3],
[2, 2]])

>>> np.argsort(x, axis=0) #按列排序
array([[0, 1],
[1, 0]])

>>> np.argsort(x, axis=1) #按行排序
array([[0, 1],
[0, 1]])
#######################################

例1:

>>> x = np.array([3, 1, 2])
>>> np.argsort(x) #按升序排列
array([1, 2, 0])
>>> np.argsort(-x) #按降序排列
array([0, 2, 1])
>>> x[np.argsort(x)] #通过索引值排序后的数组
array([1, 2, 3])
>>> x[np.argsort(-x)]
array([3, 2, 1])
另一种方式实现按降序排序:

>>> a = x[np.argsort(x)]
>>> a
array([1, 2, 3])
>>> a[::-1]
array([3, 2, 1])

                                    

   4 shape():返回数组的长度,如果是二维数组则返回两个值

            例 shanpe([0])------1

                 a=array([[1,2],[2,3]])  a.shape[0]---2 返回行数  a.shape()------(2,2)

5   tile(A,B):B可以是int类型也可以是元组

     例:numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次

              numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次

              numpy.tile([0,0],(2,1))#在列方向上重复[0,0]1次,行2次
6 sum函数;平时用的sum应该是默认的axis=0 就是普通的相加,当加入axis=1以后就是将一个矩阵的每一行向量相加。

    例:

 c = np.array([[0, 2, 1], [3, 5, 6], [0, 1, 1]])
 print c.sum()
 print c.sum(axis=0)4
 print c.sum(axis=1)
 结果分别是:19, [3 8 8], [ 3 14  2]
 axis=0, 表示列。
 axis=1, 表示行。
7 字典中的get方法:
dict.get(key, default=None) key表示字典中的键值,default表示默认值当查找的键值不存在则返回默认值
 例:dit={'shansh':12,'lihao':11,'hh':13} print dit.get('lh','henhao') 输出为henhao
8 算法中一句不理解,解析:
    sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)

iteritems()和items()区别:dict.items()返回的是一个完整的列表,而dict.iteritems()返回的是一个生成器(迭代器)。

itemgetter():operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。

a = [1,2,3] 
>>> b=operator.itemgetter(1)      //定义函数b,获取对象的第1个域的值
>>> b(a) 

>>> b=operator.itemgetter(1,0)  //定义函数b,获取对象的第1个域和第0个的值
>>> b(a) 
(2, 1)

要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值