《机器学习实战》读书笔记(零)——numpy中的方法及其他

Sep 12, 2016 15:03 · 997 words · 2 minute read Machine Learning Python

关于python函数库:numpy的基础使用方法记录,以及一些其它标准库或第三方库中的函数说明

Numpy

array和matrix

numpy库的主要操作对象。使用random.rand(4,4)可以创建一个4行4列内容随机的array对象,调用mat()函数可以将其转换为一个matrix对象。

>>> randMat = mat(random.rand(4,4))
>>> randMat
matrix([[ 0.98975541,  0.27957697,  0.83685745,  0.13530511],
        [ 0.85572892,  0.05928314,  0.66136197,  0.26851426],
        [ 0.88330279,  0.95819479,  0.03727958,  0.66120925],
        [ 0.63770613,  0.67828964,  0.83373738,  0.11810562]])

.I操作符实现矩阵的求逆运算:

>>> randMat.I
matrix([[ 3.90017891, -2.28268213,  0.50877087, -2.1267865 ],
        [ 0.65554002, -1.76093547,  0.45260111,  0.71863086],
        [-2.66511718,  2.40432073, -0.78871051,  2.00254867],
        [-6.00992728,  5.46572303,  0.22129765,  1.68683959]])

函数eye(4)创建4*4的单位矩阵:

>>> eye(4)
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

shape属性表示一个array /matrix的维度:

>>> randMat.shape
(4, 4)

其中shape[0]表行数,shape[1]表列数。(在多维数组中,低维的长度表示在右,高维在左)。

ndim属性表示数组轴的个数,在python的世界中,轴的个数被称作秩。

>>> randMat.ndim
2

ndim属性的值应该等于shape属性值的长度。

tile(A, reps)

tile方法用来重复A(可以是array可以是matrixreps次。其中,reps参数可以是int,也可以是tuple类型。当reps参数有长度d时,返回结果的维度为max(d, A.ndim).

例子(A.ndim < d):

>>> tile([0,0], 5) #在列方向上重复[0,0]5次
array([0,0,0,0,0,0,0,0,0,0])
>>> tile([0,0], (2,1)) #在列方向上重复[0,0]1次,在行方向上重复2次
array([[0,0],
       [0,0]])
>>> tile([0,0], (1,2,3)) #在列方向上重复3次,行方向2次,还有z轴方向上1次
array([[[0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0]]]) #注意看外面多了一层[]

另外当A.ndim>d时,reps参数将会在前面自动被补上1,以使其长度和A.ndim相等。比如对于一个shape为(2,3,4,5)的AA.ndim是4),(2,2)reps会被当作(1,1,2,2)进行处理。

sum()

求和函数,不给参数时将对象中所有数据加起来返回;比如

>>> array([[1, 2], [3, 4]]).sum()
10

参数axis标志轴,默认为None,给axis参数时,返回对应轴上的和:

>>> a = array([[ 1.  ,  1.21],
               [ 1.  ,  1.  ],
               [ 0.  ,  0.  ],
               [ 0.  ,  0.01]])
>>> a.sum(axis=0)
array([2. , 2.22])
>>> a.sum(axis=1)
array([ 2.21,  2.  ,  0.  ,  0.01])

argsort()

“Returns the indices that would sort an array.”.

例如:

>>> distances
array([ 1.48660687,  1.41421356,  0.        ,  0.1       ])
>>> distances.argsort()
array([2, 3, 1, 0])

zeros()

根据传入的tuple创建一个指定大小的全零矩阵。

>>> zeros((3,4,5))
array([[[ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.,  0.]]])

min() & max()

“Return the minimum along a given axis.”

很简单,返回指定轴上的数据和。

sorted()

内置排序函数。待补充。

http://www.cnblogs.com/woshitianma/p/3222989.html

这篇文章写得很详细,有空再自己总结一篇。