• numpy 练习


    numpy学习,为后续机器学习铺垫

    参考网址

    #!/usr/bin/python
    #coding=utf-8
    #__author__='dahu'
    # 
    from numpy import *
    import numpy as np
    
    a = np.arange(12).reshape(2, 2, 3)  # 2个2行3列的数组
    print a, type(a)  # ndarray
    print a.shape  ,'3行5列'
    print a.ndim   ,'轴的个数'
    print a.size   ,'总个数'
    print a.dtype  ,'每个元素的类型'
    a = array(range(5))  # 创建数组
    print a, type(a),   'array是工厂函数,生成数组'
    b = array(tuple(range(5)))
    # print b, type(b)
    print linspace(1, 2, 11)  ,'[start,stop],还有一个是数量'
    print arange(1, 2, 0.1)  , '类似range,不过可以搞浮点数'
    fl = array(linspace(1, 2, 11))
    print fl.dtype  ,'用linspace生成浮点数组,查看每个元素类型,正确。'
    c = array(zip(range(5), range(10, 15), range(20, 25)))
    print c,'配合zip生成数组,纵向的'
    d = array((range(5), range(10, 15), range(20, 25)))
    print d,'横向的生成数组'
    # print zeros((3,4))  #全0数组
    # print ones((3,4))   #全1数组
    print empty((3, 4))  # 函数 empty 创建一个内容随机并且依赖与内存状态的数组,这个没怎么明白
    
    #打印数组
    ''' 打印规则:
    最后的轴从左到右打印
    次后的轴从顶向下打印
    剩下的轴从顶向下打印,每个切片通过一个空行与下一个隔开
    '''
    print np.arange(6),'1维'
    print np.arange(12).reshape(4,3),'2维'
    print np.arange(24).reshape(2,3,4),'3维'
    
    # np.set_printoptions(threshold='nan')  #强制打印整个数组
    print arange(10000).reshape(100,100),'数组太大,省略中间部分只打印角落'
    
    #基本运算
    print np.arange(10,15)-np.arange(5),'数组减法,按元素运算'
    print np.arange(5)**2
    print np.arange(5)*np.arange(10,15),'数组相乘,对应元素相乘'
    a=np.arange(12).reshape(3,4)
    a+=1
    print a,'操作+=,*=也是针对每个元素来操作的'
    print np.fromfunction(lambda x,y:x*y,(3,4)),'也算是构造数组,由函数生成'
    # print a,a.shape
    # a=a.reshape(2,2,3)
    # print a
    for ele in a.flat:
        print ele,                      #对每个数组元素进行迭代,多维也可以
    c=[ele for ele in a.flat]
    print np.array(c).reshape(3,4)      ,'迭代完了再转换成数组,不耽误'
    e= np.floor(10*np.random.random((2,12))) #floor取整数位
    print e
    print np.hsplit(e,4),'纵向切'
    print np.vsplit(e,2),'横向切'
    /usr/bin/python2.7 /home/dahu/Homework/GMM的EM算法实现/numpy练习.py
    [[[ 0  1  2]
      [ 3  4  5]]
    
     [[ 6  7  8]
      [ 9 10 11]]] <type 'numpy.ndarray'>
    (2, 2, 3) 3行5列
    3 轴的个数
    12 总个数
    int64 每个元素的类型
    [0 1 2 3 4] <type 'numpy.ndarray'> array是工厂函数,生成数组
    [ 1.   1.1  1.2  1.3  1.4  1.5  1.6  1.7  1.8  1.9  2. ] [start,stop],还有一个是数量
    [ 1.   1.1  1.2  1.3  1.4  1.5  1.6  1.7  1.8  1.9] 类似range,不过可以搞浮点数
    float64 用linspace生成浮点数组,查看每个元素类型,正确。
    [[ 0 10 20]
     [ 1 11 21]
     [ 2 12 22]
     [ 3 13 23]
     [ 4 14 24]] 配合zip生成数组,纵向的
    [[ 0  1  2  3  4]
     [10 11 12 13 14]
     [20 21 22 23 24]] 横向的生成数组
    [[  0.00000000e+000   4.94065646e-324   9.88131292e-324   1.48219694e-323]
     [  1.97626258e-323   2.47032823e-323   2.96439388e-323   3.45845952e-323]
     [  3.95252517e-323   4.44659081e-323   4.94065646e-323   5.43472210e-323]]
    [0 1 2 3 4 5] 1维
    [[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]
     [ 9 10 11]] 2维
    [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]] 3维
    [[   0    1    2 ...,   97   98   99]
     [ 100  101  102 ...,  197  198  199]
     [ 200  201  202 ...,  297  298  299]
     ..., 
     [9700 9701 9702 ..., 9797 9798 9799]
     [9800 9801 9802 ..., 9897 9898 9899]
     [9900 9901 9902 ..., 9997 9998 9999]] 数组太大,省略中间部分只打印角落
    [10 10 10 10 10] 数组减法,按元素运算
    [ 0  1  4  9 16]
    [ 0 11 24 39 56] 数组相乘,对应元素相乘
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]] 操作+=,*=也是针对每个元素来操作的
    [[ 0.  0.  0.  0.]
     [ 0.  1.  2.  3.]
     [ 0.  2.  4.  6.]] 也算是构造数组,由函数生成
    1 2 3 4 5 6 7 8 9 10 11 12 [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]] 迭代完了再转换成数组,不耽误
    [[ 0.  0.  4.  6.  3.  8.  6.  3.  7.  0.  5.  7.]
     [ 3.  7.  1.  2.  9.  8.  4.  2.  3.  0.  9.  7.]]
    [array([[ 0.,  0.,  4.],
           [ 3.,  7.,  1.]]), array([[ 6.,  3.,  8.],
           [ 2.,  9.,  8.]]), array([[ 6.,  3.,  7.],
           [ 4.,  2.,  3.]]), array([[ 0.,  5.,  7.],
           [ 0.,  9.,  7.]])] 纵向切
    [array([[ 0.,  0.,  4.,  6.,  3.,  8.,  6.,  3.,  7.,  0.,  5.,  7.]]), array([[ 3.,  7.,  1.,  2.,  9.,  8.,  4.,  2.,  3.,  0.,  9.,  7.]])] 横向切
    
    Process finished with exit code 0
  • 相关阅读:
    【MySQL】【2】数字排序问题
    【MySQL】【1】表中存在重复记录,删除保留其中一条
    poj 1811 Prim test
    Yours 的博客开张啦!
    P1044
    P1103
    hustwinter1-B
    hustwinterC
    hustwinter1-A
    hdu 2138 How many prime numbers
  • 原文地址:https://www.cnblogs.com/dahu-daqing/p/6754784.html
Copyright © 2020-2023  润新知