python记录 k-nearest neighbor

来源:互联网 发布:甲醇产业链网络协会 编辑:程序博客网 时间:2024/05/18 03:54

numpy函数


a的乘积形式为a=2*3=6

a的幂指数形式为a=2**3=8


shape 函数:

建立一个4×2的矩阵c, c.shape[1] 为第一维(行)的长度,c.shape[0] 为第二维(列)的长度。

  1. >>> c = array([[1,1],[1,2],[1,3],[1,4]])  
  2. >>> c.shape  
  3. (4, 2)  
  4. >>> c.shape[0]  
  5. 4  
  6. >>> c.shape[1]  
  7. 2   
一个单独的数值,返回值为空 copy
  1. >>> shape(3)  
  2. ()  

tile函数:    

[python] view plain copy
  1. >>> import numpy  
  2. >>> numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次  
  3. array([0000000000])  
  4. >>> numpy.tile([0,0],(1,1))#在列方向上重复[0,0]1次,行1次  
  5. array([[00]])  
  6. >>> numpy.tile([0,0],(2,1))#在列方向上重复[0,0]1次,行2次  
  7. array([[00],  
  8.        [00]])  
  9. >>> numpy.tile([0,0],(3,1))  
  10. array([[00],  
  11.        [00],  
  12.        [00]])  
  13. >>> numpy.tile([0,0],(1,3))#在列方向上重复[0,0]3次,行1次  
  14. array([[000000]])  
  15. >>> numpy.tile([0,0],(2,3))<span style="font-family: Arial, Helvetica, sans-serif;">#在列方向上重复[0,0]3次,行2次</span>  
  16. array([[000000],  
  17.        [000000]])  


sum函数:

没有axis参数表示全部相加,axis=0表示按列相加,axis=1表示按照行的方向相加

  1. >>> import numpy as np  
  2. >>> a=np.sum([[0,1,2],[2,1,3]])  
  3. >>> a  
  4. 9  
  5. >>> a.shape  
  6. ()  
  7. >>> a=np.sum([[0,1,2],[2,1,3]],axis=0)  
  8. >>> a  
  9. array([225])  
  10. >>> a.shape  
  11. (3,)  
  12. >>> a=np.sum([[0,1,2],[2,1,3]],axis=1)  
  13. >>> a  
  14. array([36])  
  15. >>> a.shape  
  16. (2,)  

argsort函数:

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

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


operator.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函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。

进行多级排序,即先跟第三个域进行排序,再根据第二个域排序(反过来了)



sorted函数:
Python内置的排序函数sorted可以对list或者iterator进行排序该函数原型为:sorted(iterable,cmp,key,reverse)

参数解释:

(1)iterable指定要排序的list或者iterable;

(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:

      students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写:
      students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
      sorted(students, key=lambda student : student[2])
(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:
      sorted(students, key=lambda student : student[2])

      key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。

有了上面的operator.itemgetter函数,也可以用该函数来实现,例如要通过student的第三个域排序,可以这么写:
sorted(students, key=operator.itemgetter(2)) 
sorted函数也可以进行多级排序,例如要根据第二个域和第三个域进行排序,可以这么写:
sorted(students, key=operator.itemgetter(1,2))

即先跟句第二个域排序,再根据第三个域排序。
(4)reverse参数是一个bool变量,表示升序还是降序排列,默认为false(升序排列),定义为True时将按降序排列。


get函数:

当我们获取字典里的值的时候,一个是通过键值对,即dict['key'],另一个就是dict.get()方法。

例如: view plain copy

  1. >>> dict = {'a':'AA''b':'BB''c':'CC'}  
  2. >>> dict['a']  
  3. 'AA'  
  4. >>> dict.get('a')  
  5. 'AA'  
get()方法语法:
dict.get(key, default=None)

key       -- 字典中要查找的键。
default -- 如果指定键的值不存在时,返回该默认值。

例如:

  1. >>> dict.get('d','error')  
  2. 'error'  

iteritems函数:

items方法是可以将字典中的所有项,以列表方式返回。(python3语句)
iteritems方法(python2语句)与items方法相比作用大致相同,只是它的返回值不是列表,而是一个迭代器。
 copy

  1. >>> d = {'1':'one''2':'two''3':'three'}  
  2. >>> x = d.items()  
  3. >>> x  
  4. [('1''one'), ('3''three'), ('2''two')]  
  5. >>> type(x)  
  6. <type 'list'>  
  7. >>> y = d.iteritems()  
  8. >>> y  
  9. <dictionary-itemiterator object at 0x025008A0>  
  10. >>> type(y)  
  11. <type 'dictionary-itemiterator'>  

strip函数和split函数:

实际上strip是删除的意思;而split则是分割的意思。因此也表示了这两个功能是完全不一样的,strip可以删除字符串的某些字符,而split则是根据规定的字符将字符串进行分割。

1、strip函数

声明:s为字符串,rm为要删除的字符序列

s.strip(rm)       删除s字符串中开头、结尾处,位于 rm删除序列的字符

s.lstrip(rm)      删除s字符串中开头处,位于 rm删除序列的字符

s.rstrip(rm)     删除s字符串中结尾处,位于 rm删除序列的字符

注意:

(1)当rm为空时,默认删除空白符(包括'\n', '\r', '\t',  ' ')

(2)这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

例如,

1
2
3
4
5
>>> a ='  123' 
>>> a 
'  123' 
>>> a.strip() 
'123'

(2)这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

例如,

1
2
3
4
5
>>> a ='123abc' 
>>> a.strip('21'
'3abc' 
>>> a.strip('12'
'3abc'

2、split函数

说明:

Python中没有字符类型的说法,只有字符串,这里所说的字符就是只包含一个字符的字符串!!!

这里这样写的原因只是为了方便理解,仅此而已。

(1)按某一个字符分割,如‘.'

1
2
3
4
5
6
>>> str=('www.google.com'
>>> printstr 
www.google.com 
>>> str_split = str.split('.'
>>> printstr_split 
['www','google','com']

(2)按某一个字符分割,且分割n次。如按‘.'分割1次

1
2
3
>>> str_split = str.split('.',1
>>> printstr_split 
['www','google.com']

(3)split()函数后面还可以加正则表达式,例如:

1
2
3
>>> str_split = str.split('.')[0
>>> printstr_split 
www

split分隔后是一个列表,[0]表示取其第一个元素;

1
2
3
4
5
6
>>> str_split = str.split('.')[::-1
>>> printstr_split 
['com','google','www'
>>> str_split = str.split('.')[::] 
>>> printstr_split 
['www','google','com']

[::-1]按反序列排列,[::]安正序排列


 
append函数:

列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。
1. 列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。

2.  append() 方法向列表的尾部添加一个新的元素。只接受一个参数。

3.  extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。

**********************************************************************************************************************

append()用法示例:

>>> mylist = [1,2,0,'abc']

>>> mylist

[1, 2, 0, 'abc']

>>> mylist.append(4)

>>> mylist

[1, 2, 0, 'abc', 4]

>>> mylist.append('haha')

>>> mylist

[1, 2, 0, 'abc', 4, 'haha']

>>>

**********************************************************************************************************************

extend()用法示例:

>>> mylist

[1, 2, 0, 'abc', 4, 'haha']

>>> mylist.extend(['lulu'])

>>> mylist

[1, 2, 0, 'abc', 4, 'haha', 'lulu']

>>> mylist.extend([aaa,'lalalala'])

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'aaa' is not defined

>>> mylist.extend(['123123','lalalala'])

>>> mylist

[1, 2, 0, 'abc', 4, 'haha', 'lulu', '123123', 'lalalala']

>>> mylist.extend([111111,222])

>>> mylist

[1, 2, 0, 'abc', 4, 'haha', 'lulu', '123123', 'lalalala', 111111, 222]


min/max函数:

  1. import numpy as np  
  2. a = np.array([[1,5,3],[4,2,6]])  
  3. print(a.min()) #无参,所有中的最小值  
  4. print(a.min(0)) # axis=0; 每列的最小值  
  5. print(a.min(1)) # axis=1;每行的最小值  

结果:

1

[1 2 3]

[1 2]