NumPy函数库基础
rand()
可以随机生成一个n*n的数组
import numpy as np
rand = np.random.rand(4,4)
print(rand)
mat()
将一个数组转化为矩阵
import numpy as np
rand = np.random.rand(4,4)
randmat=np.mat(rand)
print(randmat)
注意 Numpy数组和矩阵的区别:
- Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。
- 在numpy中matrix的主要优势是:相对简单的乘法运算符号。例如,a和b是两个matrices,那么a*b,就是矩阵积。
- matrix 和 array 都可以通过objects后面加.T 得到其转置。但是 matrix objects 还可以在后面加 .H f得到共轭矩阵, 加 .I 得到逆矩阵。
- 相反的是在numpy里面arrays遵从逐个元素的运算,所以array:c 和d的c*d运算相当于matlab里面的c.*d运算。而矩阵相乘,则需要numpy里面的dot命令 。
逆矩阵、转置矩阵、共轭矩阵
import numpy as np
rand = np.random.rand(4,4)
randmat=np.mat(rand)
#逆矩阵
randmati=randmat.I
#共轭矩阵
randmath=randmat.H
#转置矩阵
randmatt=randmat.T
tile()
可以根据输入的参数重复构造数组
a=[1,2,3]
b=np.tile(a,2)
c=np.tile(a,3)
print(b)
print(c)
argsort()
argsort()函数是将x中的元素从小到大排列,提取其对应的index(索引),然后输出到
a=[1,0,-1,4,3,9]
y=np.argsort(a)
print(y)
sort()
sorted(iterable[, cmp[, key[, reverse]]])
iterable指定要排序的list或者iterable或dictionary的key或item
cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,
key为函数,指定取待排序元素的哪一项进行排序
reverse实现降序排序,需要提供一个布尔值,默认为False(升序排列)。
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号)
a = [ 1 , 2 , 3 ]
>>> b = operator.itemgetter( 1 ) / / 定义函数b,获取对象的第 1 个域的值
>>> b(a)
2
>>> b = operator.itemgetter( 1 , 0 ) / / 定义函数b,获取对象的第 1 个域和第 0 个的值
>>> b(a)
( 2 , 1 )
下面的代码的含义是,将classCount这个字典按照value降序排列
sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)