机器学习(3)-一些常用的Python3.0函数
2017-09-18 15:30
519 查看
在这里记载一下我处理图片数据集时候,遇到一些函数;
max()和argmax()
max是Python的内置函数,而argmax()是numpy的调用函数。
A:是一个[m*n]的矩阵
max(A),求出矩阵A中的最大值
这里的A应该是一个n*1的矩阵。
B:B[m,n]矩阵
argmax(),就是求出矩阵最大元素的索引,比如下面的A矩阵,求出就是np.argmax(A)=4,np.argmax(B)=7,
下面这段代码是求矩阵中最大元素的位置:
2.divmod()
这是一个Python内置函数:
用法见上面一段代码,输出返回两个参数。
sort(),sorted()和argsort()
sort()和sorted()区别很大:
首先是排序对象:sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序。
下面就是用sorted()对list的排序。
注意函数形式为:sorted(iterable,cmp,key,reverse)
cmp是带两个参数的比较函数;
key 是带一个参数的函数;
reverse为False或者True;
然后是排序效果:用sort函数对列表排序时会影响列表本身,而sorted不会.所以使用两者需注意。
然后是np.argsort():
argsort函数返回的是数组值从小到大的索引值
get()
get()函数是对字典的一种操作。
get()的语法:dict.get(key, default=None)
就是根据字典的键值获取对应的键值
4.flatnonzero()
注意:这个函数的输入可以是多维的数组,返回值是数组中非零元素的索引。
同样功能的函数可见nonzero(),只是返回的是两个数组,一个装的是非零元素的行,一个装的是非零元素的列。
5.enumerate()
enumerate()是枚举的意思,也是Python的内置函数。
注意enumerate的操作对象是字典或者list。
具体用法见下面截图:
6.random.choice(),random.sample()
注意,使用时候引入 import random
语法:random.choice( seq ):seq – 可以是一个列表,元组或字符串。
7.random.rand()
语法:np.random.rand(m,n),用法和上面不太一样。加了np.
用于残生一个元素值均匀分布在[0,1]的矩阵
8.shape()
A.shape:返回的一个一维数组,里面就是是A矩阵的维度,行数,列数信息。
举例子:
A.shape[0]:根据上面代码,返回描述矩阵的第一个信息,就是.shape()返回值的第一个元素
A.shape[1]:。。。。。第二个元素
9.reshape()
reshape(a,m,n):将一个矩阵变为一个有a维,每个维度都是一个m×n的矩阵。
也可以直接用reshape(m,n)
应用见上面一个函数的距离,在图像中用于将图像变为行向量,处理完成后,变换为图像矩阵显示。
10.bincount()
用途:用于统计索引出现的次数。有点抽象吧,看下面代码例子
第一种形式;bincount(x)
其实bincount(x,weight = None,minlength =None)对后面两个参数理解,见下图
11.sum()
看代码就理解了
12.add()
python 集合的添加有两种常用方法,分别是add和update。
add也可以矩阵相加
13.hstack(),vstack()
一种用于组合不同数组的函数
用法见代码
14.squeeze()
函数功能:除去size为1的维度
B = squeeze(A),B与A有相同的元素,但所有只有一行或一列的维度(a singleton dimension)被去除掉了
如果没有一行或者一列,不改变矩阵任何信息。
结果为
15.range()和np.arange()
max()和argmax()
max是Python的内置函数,而argmax()是numpy的调用函数。
A:是一个[m*n]的矩阵
max(A),求出矩阵A中的最大值
这里的A应该是一个n*1的矩阵。
B:B[m,n]矩阵
argmax(),就是求出矩阵最大元素的索引,比如下面的A矩阵,求出就是np.argmax(A)=4,np.argmax(B)=7,
下面这段代码是求矩阵中最大元素的位置:
import numpy as np A = np.mat([[1,2,3],[4,6,5]]) B= np.array([[1,2,3,4],[2,3,1,5]]) print ('max:',np.argmax(A)) row,column = np.shape(A) print(row,column) m, n = divmod(np.argmax(A), column) print (A[m,n]) print (max(A))#这句话报错,因为A矩阵不是一行
2.divmod()
这是一个Python内置函数:
用法见上面一段代码,输出返回两个参数。
sort(),sorted()和argsort()
sort()和sorted()区别很大:
首先是排序对象:sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序。
下面就是用sorted()对list的排序。
注意函数形式为:sorted(iterable,cmp,key,reverse)
cmp是带两个参数的比较函数;
key 是带一个参数的函数;
reverse为False或者True;
>>> 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)] >>> 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)]
然后是排序效果:用sort函数对列表排序时会影响列表本身,而sorted不会.所以使用两者需注意。
>>> a = [1,2,1,4,3,5] >>> sorted(a) [1, 1, 2, 3, 4, 5] >>> a [1, 2, 1, 4, 3, 5] >>> a.sort() >>> a [1, 1, 2, 3, 4, 5]
然后是np.argsort():
argsort函数返回的是数组值从小到大的索引值
get()
get()函数是对字典的一种操作。
get()的语法:dict.get(key, default=None)
就是根据字典的键值获取对应的键值
dict = {'Name': 'Zara', 'Age': 27} print ("Value : %s" % dict.get('Age')) >>>Value :27 print "Value : %s" % dict.get('Sex', "Never")#Sex不是字典中的键 >>> Value: Never
4.flatnonzero()
注意:这个函数的输入可以是多维的数组,返回值是数组中非零元素的索引。
同样功能的函数可见nonzero(),只是返回的是两个数组,一个装的是非零元素的行,一个装的是非零元素的列。
5.enumerate()
enumerate()是枚举的意思,也是Python的内置函数。
注意enumerate的操作对象是字典或者list。
具体用法见下面截图:
6.random.choice(),random.sample()
注意,使用时候引入 import random
语法:random.choice( seq ):seq – 可以是一个列表,元组或字符串。
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] slice = random.sample(list, 5) #从list中随机获取5个元素,作为一个片断返回 print slice print list #原有序列并没有改变。
import random print (random.choice((1,2,3))) >>>1 print (random.choice('rand')) >>>r
7.random.rand()
语法:np.random.rand(m,n),用法和上面不太一样。加了np.
用于残生一个元素值均匀分布在[0,1]的矩阵
print (np.random.rand(3,3))
8.shape()
A.shape:返回的一个一维数组,里面就是是A矩阵的维度,行数,列数信息。
举例子:
a = np.arange(3*4*5).reshape(3,4,5) print (a.shape)//也可以写成print(np.shape(a)) print (a.shape[0]) print (a.shape[1]) print (a.shape[2]) >>>(3,4,5) >>>3 >>>4 >>>5
A.shape[0]:根据上面代码,返回描述矩阵的第一个信息,就是.shape()返回值的第一个元素
A.shape[1]:。。。。。第二个元素
9.reshape()
reshape(a,m,n):将一个矩阵变为一个有a维,每个维度都是一个m×n的矩阵。
也可以直接用reshape(m,n)
应用见上面一个函数的距离,在图像中用于将图像变为行向量,处理完成后,变换为图像矩阵显示。
10.bincount()
用途:用于统计索引出现的次数。有点抽象吧,看下面代码例子
第一种形式;bincount(x)
x = np.array([0, 1, 1, 3, 2, 1, 7]) # 我们可以看到x中最大的数为7,因此bin的数量为8,那么它的索引值为0->7(先不管x是怎么来的,把里面的元素看成普通的数,这里面的索引就是指这些数) # 索引0出现了1次,索引1出现了3次......索引5出现了0次...... np.bincount(x) #因此,输出结果为:array([1, 3, 1, 1, 0, 0, 0, 1]) 下面谈谈x形成的一种来源:输入一张图片,与样本中的图片(m张,共有4类-猫,猪,狗,鸡)计算距离,就会得到一个1×m的矩阵,然后根据矩阵的元素值(也就是图片间的距离)从小到大排序,从这m个从小到大的元素中取出前k个,作为输入图片的最近邻。这前k个元素(假设k=5)是原来m中第1,5,7,8,9张图片。则对应的分类为(y[1],y[5],y[7],y[8],y[9]),对应的类为(1,2,1,4,1) 这个(1,2,1,4,1)就是上面的x。 通过np.bincount(x)后,得到[(0,3,1,0,1)],于是得到x中索引1出现了3次。这个索引就是图片的类别。 这个“索引”可以这样理解,为第i张图片对应的类别y[i](y[1]只可能是1,2,3,4),就是在4个类别中索引.应该明白了吧,哈哈。
其实bincount(x,weight = None,minlength =None)对后面两个参数理解,见下图
11.sum()
看代码就理解了
c = np.array([[2, 1], [5, 6], [ 1, 1]]) print c.sum() >>>16 print c.sum(axis=0)#每一列的和 >>>[8,8] print c.sum(axis=1)#每一行的和 >>>[3,11,2]
12.add()
python 集合的添加有两种常用方法,分别是add和update。
add也可以矩阵相加
13.hstack(),vstack()
一种用于组合不同数组的函数
用法见代码
>>> a = floor(10*random.random((2,2))) >>> a array([[ 1., 1.], [ 5., 8.]]) >>> b = floor(10*random.random((2,2))) >>> b array([[ 3., 3.], [ 6., 0.]]) >>> print (np.vstack((a,b))) array([[ 1., 1.], [ 5., 8.], [ 3., 3.], [ 6., 0.]]) >>> print (np.hstack((a,b))) array([[ 1., 1., 3., 3.], [ 5., 8., 6., 0.]])
14.squeeze()
函数功能:除去size为1的维度
B = squeeze(A),B与A有相同的元素,但所有只有一行或一列的维度(a singleton dimension)被去除掉了
如果没有一行或者一列,不改变矩阵任何信息。
a = np.random.rand(4,1,3) print (a) print (np.squeeze(a))
结果为
15.range()和np.arange()
range()不支持步长为小数,np.arange()支持步长为小数 两者都有三个参数,以第一个参数为起点,第三个参数为步长,截止到第二个参数之前的不包括第二个参数的数据序列 某种意义上,和STL中由迭代器组成的区间是一样的,即"左闭右开"的区间。[first, last)或者不加严谨地写作[first:step:last) >>>for i in range(1, 5): ... print(i) 1 2 3 4 >>> np.arange(1, 5) array([1, 2, 3, 4]) >>>np.arange(1, 5, .5) array([ 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
相关文章推荐
- Python一些不常用的函数的收集
- python抓取京东商品颜色&beautifulsoup的一些常用函数
- 零基础学python-4.4 常用的一些内建函数
- python 面向对象中一些常用内建函数【getattr(), setattr(). hasattr(). delattr()...】
- python 面向对象中一些常用内建函数【getattr(), setattr(). hasattr(). delattr()...】
- python学习总结----一些常用函数
- python 一些常用函数笔记
- 零基础学python-2.24 一些常用函数
- 机器学习中数据处理与可视化的python、numpy等常用函数
- 零基础学python-4.4 常用的一些内建函数
- Python的一些常用高级函数
- 零基础学python-2.24 一些常用函数
- python中一些常用的函数命令
- 零基础学python-2.24 一些常用函数
- 零基础学python-4.4 常用的一些内建函数
- python中一些常用函数的实现
- python: 常用的一些函数——sys、os等
- python一些常用函数
- 机器学习常用python函数解析
- Python学习笔记——一些常用函数、常见错误总结