cs231n assignment1(KNN)用到的函数:enumerate()/flatnonzero()/argsort()/array_split()

来源:互联网 发布:数控机床编程入门斯沃 编辑:程序博客网 时间:2024/05/16 15:22

cs231n课程assignment1,KNN部分学习时用到的函数汇总记录


1. enumerate()函数

是python的内置枚举函数

对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
enumerate多用于在for循环中得到计数

使用:

list1 = ["这", "是", "一个", "测试"]for index, item in enumerate(list1): print index, item

>>>0 这1 是2 一个3 测试



2.flatnonzero()

该函数输入一个矩阵,返回扁平化后矩阵中非零元素的位置(index)
这是官方文档给出的用法,非常正规,输入一个矩阵,返回了其中非零元素的位置

>>> x = np.arange(-2, 3)
>>> xarray([-2, -1,  0,  1,  2])>>> np.flatnonzero(x)array([0, 1, 3, 4])

特别地,用来返回某个特定元素的位置

对向量元素的判断d==3返回了一个和向量等长的由0/1组成的矩阵,然后调用函数,返回的位置,就是对应要找的元素的位置。

d = np.array([1,2,3,4,4,3,5,3,6])find_d = np.flatnonzero(d == 3)print find_d

[2,5,7]


3. 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)]>>> aarray([1, 2, 3])>>> a[::-1]array([3, 2, 1])   


当然,如果想排序不需要这样,可以直接使用sort()和sorted()函数:

sort()改变原列表

>>> a = [1,2,1,4,3,5]>>> a.sort()>>> a[1, 1, 2, 3, 4, 5]

sorted()不改变原列表

>>> a = [1,2,1,4,3,5]>>> sorted(a)[1, 1, 2, 3, 4, 5]>>> a[1, 2, 1, 4, 3, 5]

4. array_split()函数

将列表拆分为几份
首先是spilt()使用:
>>> x = np.arange(9.0)>>> np.split(x, 3)[array([ 0.,  1.,  2.]), array([ 3.,  4.,  5.]), array([ 6.,  7.,  8.])]
>>> x = np.arange(8.0)>>> np.split(x, [3, 5, 6, 10])[array([ 0.,  1.,  2.]), array([ 3.,  4.]), array([ 5.]), array([ 6.,  7.]), array([], dtype=float64)]

array_split():

功能与split一样,唯一的区别是 array_split() 允许不均等地拆分原列表:
>>> x = np.arange(8.0)>>> np.array_split(x, 3)[array([ 0.,  1.,  2.]), array([ 3.,  4.,  5.]), array([ 6.,  7.])]



具体题目过程可参考:http://blog.csdn.net/zhyh1435589631/article/details/54236643




原创粉丝点击