numpy学习过程

1、shape的用法

shape函数是numpy.core.fromnumeric中的函数,它的功能是查看矩阵或者数组的维数。

举例说明:

  1. >>> e = eye(3)  
  2. >>> e  
  3. array([[ 1.,  0.,  0.],  
  4.        [ 0.,  1.,  0.],  
  5.        [ 0.,  0.,  1.]])  
  6. >>> e.shape  
  7. (3, 3)

shape还可以返回单独的维数:

  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  

2、tile

原型为numpy.tile(A,reps)

A为待输入数组,reps为A重复的次数,reps可以决定行列方向上的重复次数:

import numpy
>>> numpy.tile([0,0],3)
array([0, 0, 0, 0, 0, 0])
>>> numpy.tile([0,0],[3,3])
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])

3、sum(axis=1)

sum函数的原型为sum(a, axis=0),在默认状况下axis=0,意思是普通的相加,当axis=1时,为每行向量相加,但是数组要大于一维,否则会报错。

>>> np = numpy
>>> a = np.array([0,2,1])
>>> a.sum()
3
>>> a.sum(axis=1)
numpy.core._internal.AxisError: axis 1 is out of bounds for array of dimension 1
>>> b = np.array([[1,2,3],[4,5,6]])
		  
>>> b.sum(axis=1)
		  
array([ 6, 15])

4、numpy.argsort

返回数组元素大小的索引值;

    One dimensional array:一维数组
    
    >>> x = np.array([3, 1, 2])
    >>> np.argsort(x)
    array([1, 2, 0])
    
    Two-dimensional array:二维数组
    
    >>> x = np.array([[0, 3], [2, 2]])
    >>> x
    array([[0, 3],
           [2, 2]])
    
    >>> np.argsort(x, axis=0) #按列排序
    array([[0, 1],
           [1, 0]])
    
    >>> np.argsort(x, axis=1) #按行排序
    array([[0, 1],
           [0, 1]])

#######################################

例1:

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

3、items()

python3中,没有iteritems,items()会返回将字典一列表的形式返回,不像itertems()一样占用内存,因为返回一个iterator。

a = {'a':1,'b':3}
a.items()
返回a = [('a',1),('b',3)]


4、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)

也可用于内建函数sorted:

sorted(iterable[, cmp[, key[, reverse]]])

参数说明:

1)、iterable:待排序数组;

2)、cmp: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:key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:
      sorted(students, key=lambda student : student[2])

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

也可以用operator.itemgetter实现,代码如下:

sorted(students, key=operator.itemgetter(2)) 
sorted函数也可以进行多级排序,例如要根据第二个域和第三个域进行排序,可以这么写:
sorted(students, key=operator.itemgetter(1,2))

4)、 reverse:选择排序方式,升序还是降序

你可能感兴趣的:(ml)