NumPy入门

作者: 圆圆KK | 来源:发表于2019-03-03 13:35 被阅读1次

    NumPy、Pandas、Scipy是python的三个库,也是数据分析的常用库。NumPy便于存储和处理多维数组(N-dimensional array)ndarray,这里简单说明NumPy的使用,更多内容查看NumPy官方文档

    安装包
    pip install numpy
    

    载入包

    import numpy as np
    
    1.生成数组

    NumPy有多种生成数组的方式
    (1)基本用法

    常用方法 说明 输入
    array 可输入列表、元组生成ndarry np.array([[1,2.0], [0,0],(1+1j,3.)])
    zeros / ones 生成全为0或1的矩阵 np.zeros((2,3))
    eye 生成对角线为1其余为0矩阵 np.eye(6,7,1, dtype=int)k=1为斜线偏移值
    arange 可输入起终点、步距的矩阵 np.arange(2,10,2)
    linsapce / logspace 生成整数或对数的等间距数列 np.linspace(0,20, 5,endpoint= False, retstep=True )

    linspace,这里num=5,不设定则默认50;endpoint默认True,为闭区间,False为开区间;retstep默认False, True则返回间距;同样的还有logspace。

    >>> np.array([[1,2.0], [0,0],(1+1j,3.)])
    array([[1.+0.j, 2.+0.j],
           [0.+0.j, 0.+0.j],
           [1.+1.j, 3.+0.j]])
    >>> np.zeros((2,3))
    array([[0., 0., 0.],
           [0., 0., 0.]])
    >>> np.eye(6,7,1,dtype=int)
    array([[0, 1, 0, 0, 0, 0, 0],
           [0, 0, 1, 0, 0, 0, 0],
           [0, 0, 0, 1, 0, 0, 0],
           [0, 0, 0, 0, 1, 0, 0],
           [0, 0, 0, 0, 0, 1, 0],
           [0, 0, 0, 0, 0, 0, 1]])
    >>> np.arange(2,10,2)
    array([2, 4, 6, 8])
    >>> np.linspace(0,20, 5,endpoint= False, retstep=True )
    (array([ 0.,  4.,  8., 12., 16.]), 4.0)
    

    (2)random生成随机数

    常用方法 说明 输入
    random.rand 生成[0,1)的随机数 np.random.rand(2,3)
    random.randn 生成一组正态分布的数据, 标准正态分布的可用random.standard_normal 2*np.random.randn(2,3)+4
    random.randint 返回离散均匀[a,b)范围的值,如果只输入一个值默认为[0,a)范围 np.random.randint(2,10,size=(2,4))
    random.shuffle / random.permutation 改变序列顺序 a=np.arange(12).reshape(3,4) np.random.shuffle(a)
    • 同样的还有beta, binomial, chisquare, geometric等,分别生成beta分布, binomial二项分布, chisquare卡方分布, geometric几何分布的随机数。这些都有共通性的,设定分布参数、形状。eg.二项分布np.random.binomial(n, p, size=a)(n次试验,p成功概率,生成size形状数组)
    >>> np.random.rand(2,3)
    array([[0.22128075, 0.31974379, 0.5859686 ],
           [0.3307407 , 0.18200795, 0.59027476]])
    >>> 2*np.random.randn(2,3)+4
    array([[4.65342832, 3.16739484, 5.30323633],
           [1.50943009, 4.36887803, 3.90668209]])
    >>> np.random.randint(2,10,size=(2,4))
    array([[3, 2, 4, 5],
           [2, 4, 3, 5]])
    >>> a = np.arange(12).reshape(3,4)
    >>> np.random.shuffle(a)
    >>> a
    array([[ 0,  1,  2,  3],
           [ 8,  9, 10, 11],
           [ 4,  5,  6,  7]])
    
    2.数组处理

    (1)基本用法

    常用方法 说明 输入
    reshape 改变形状 np.arange(2,10).reshape(2,4)
    T 转置 np.arange(2,10).reshape(2,4).T
    concatenate / append 连接/增加矩阵 np.concatenate((x,y), axis=1) / np.append(x,y,axis=1)axis默认为0,对应行
    split 分离 np.split(x, [1, 2, 4],axis=1)axis默认为0,对应行
    tile 重复 np.tile(x,(2,3)) (2,3)为沿轴复制的次数,分别对应0, 1轴
    delete 删除 np.delete(a,(1,3),axis=0) (1,3)删除的位置,axis默认为None,None则平展矩阵
    insert 插入 np.insert(a,(1,2),[[1],[3],[5]],axis=1)(1,2)插入位置,[[1],[3],[5]]插入数值,axis默认None
    >>> np.arange(2,10).reshape(2,4)
    array([[2, 3, 4, 5],
           [6, 7, 8, 9]])
    >>> np.arange(2,10).reshape(2,4).T
    array([[2, 6],
           [3, 7],
           [4, 8],
           [5, 9]])
    >>> x = np.array([[3,4,5],[1,2,3]])
    >>> y = np.array([[5],[4]])
    >>> np.concatenate((x,y), axis=1)
    array([[3, 4, 5, 5],
           [1, 2, 3, 4]])
    >>> np.append(x,y,axis=1) #两者输出一样
    array([[3, 4, 5, 5],
           [1, 2, 3, 4]])
    >>> x = np.arange(12).reshape(4,3)
    >>> np.split(x, [1, 2, 4])
    [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[ 6,  7,  8],
            [ 9, 10, 11]]), array([], shape=(0, 3), dtype=int32)]
    >>> x = np.array([[2,3,4],[1,0,7]])
    >>> np.tile(x,(2,3))
    array([[2, 3, 4, 2, 3, 4, 2, 3, 4],
           [1, 0, 7, 1, 0, 7, 1, 0, 7],
           [2, 3, 4, 2, 3, 4, 2, 3, 4],
           [1, 0, 7, 1, 0, 7, 1, 0, 7]])
    >>> a = np.arange(12).reshape(3,4)
    >>> np.delete(a,(1,3),1)
    array([[ 0,  2],
           [ 4,  6],
           [ 8, 10]])
    >>> np.insert(a,(1,2),[[1],[3],[5]],1)
    array([[ 0,  1,  1,  1,  2,  3],
           [ 4,  3,  5,  3,  6,  7],
           [ 8,  5,  9,  5, 10, 11]])
    
    3.按条件截取数组
    >>> a = np.arange(20).reshape(4,5)
    >>> a
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19]])
    
    • 选取一行 a[n] / 多行a[n:m] / 间隔选择多行 a[n:m:a] a为步距
    >>> a[1]
    array([5, 6, 7, 8, 9])
    >>> a[1:3]
    array([[ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])
    >>> a[::2]
    array([[ 0,  1,  2,  3,  4],
           [10, 11, 12, 13, 14]])
    
    • 选取一列a[:,n] / 多列a[:, n:m] /间隔选择多列 a[:,n:m:a] a为步距
    >>> a[:,1]
    array([ 1,  6, 11, 16])
    >>> a[:,1:5:2]
    array([[ 1,  3],
           [ 6,  8],
           [11, 13],
           [16, 18]])
    
    • 选择n行m列数 a[n,m]
    >>> a[1,2]
    7
    

    相关文章

      网友评论

        本文标题:NumPy入门

        本文链接:https://www.haomeiwen.com/subject/omsduqtx.html