美文网首页我爱编程程序员
【Python数据分析】Numpy详细教程

【Python数据分析】Numpy详细教程

作者: 一分编程 | 来源:发表于2018-01-25 15:46 被阅读0次

    Python入门之Numpy

    Numpy属性

    • ndim: 维度,即确定最底层一个元素位置需要用到的索引个数
    • shape: 行数和列数
    • size: 元素个数
    import numpy as np
    a = np.array([[0,1,2], [3,4,5], [6,7,8]])
    a.ndim   # 维度
    
    2
    
    a.shape  # 行数和列数
    
    (3, 3)
    
    a.size   # 元素个数
    
    9
    

    Numpy的创建

    Example1 创建特定数组
    a = np.array([[2,23,4],[3,34,5]])
    print(a)
    
    [[ 2 23  4]
     [ 3 34  5]]
    
    Example2 创建全零数组
    a = np.zeros((3,3))
    print(a)
    
    [[ 0.  0.  0.  0.  0.]]
    
    Example3 创建全一数组
    a = np.ones((3,3))
    print(a)
    
    [[ 1.  1.  1.]
     [ 1.  1.  1.]
     [ 1.  1.  1.]]
    
    Example4 创建全空数组,其包含的值是无意义的(慎用)
    a = np.empty((3,2))
    print(a)
    
    [[ 0.  0.]
     [ 0.  0.]
     [ 0.  0.]]
    
    Example5 用 arange 创建连续数组
    a = np.arange(10 , 20 ,2)
    print(a)
    
    [10 12 14 16 18]
    
    Example6 用 reshape 改变数组的形状
    a = np.arange(12).reshape((3, 4))
    print(a)
    
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    
    Example7 用 linspace 创建线段型数组
    a = np.linspace(1, 10, 20) # 开始端为1,结束端为10,分割成20个数据
    print(a)
    
    [  1.           1.47368421   1.94736842   2.42105263   2.89473684
       3.36842105   3.84210526   4.31578947   4.78947368   5.26315789
       5.73684211   6.21052632   6.68421053   7.15789474   7.63157895
       8.10526316   8.57894737   9.05263158   9.52631579  10.        ]
    

    Numpy的基础运算

    矩阵针对元素的运算有加、减、乘、除、乘方,还有一些函数运算,例如求和(sum())、求最大值(max())、求余弦值(sin())等等。

    a = np.arange(1,7).reshape((2,3))
    print(a)
    
    [[1 2 3]
     [4 5 6]]
    
    b = np.arange(2,8).reshape((2,3))
    print(b)
    
    [[2 3 4]
     [5 6 7]]
    
    b * a    # 加、减、乘、除类似
    
    array([[ 2,  6, 12],
           [20, 30, 42]])
    
    b + 2    # 加、减、乘、除类似
    
    array([[4, 5, 6],
           [7, 8, 9]])
    
    np.sum(a) # 求最大值、最小值类似
    
    21
    
    np.sin(a)  # 其他数学函数类似
    
    array([[ 0.84147098,  0.90929743,  0.14112001],
           [-0.7568025 , -0.95892427, -0.2794155 ]])
    
    print(a < 4)   # 针对每一个元素
    
    [[ True  True  True]
     [False False False]]
    

    矩阵乘法:

    np.dot(a, b.reshape((3, 2)))    # (2 * 3) . (3 * 2)
    
    array([[28, 34],
           [64, 79]])
    

    最大元素和最小元素的索引:

    np.argmin(b)
    
    0
    
    np.argmax(b)
    
    5
    

    均值与中位数:

    mean = np.mean(b)
    median = np.median(b)
    print("均值:{0}   中位数:{1}".format(mean, median))
    
    均值:4.5   中位数:4.5
    

    累加运算与累差运算:

    np.cumsum(b)
    
    array([ 2,  5,  9, 14, 20, 27], dtype=int32)
    
    np.diff(b)  # 每一行后一项与前一项的差
    
    array([[1, 1],
           [1, 1]])
    

    矩阵的转置:

    np.transpose(b)
    
    array([[2, 5],
           [3, 6],
           [4, 7]])
    
    a.T
    
    array([[1, 4],
           [2, 5],
           [3, 6]])
    

    Numpy的输出

    索引和切边与List类似,此处不做赘述。

    按行输出与按列输出:

    for row in b:
        print(row)
    
    [2 3 4]
    [5 6 7]
    
    for column in b.T:
        print(column)
    
    [2 5]
    [3 6]
    [4 7]
    

    Numpy的合并

    上下合并 np.vstack()

    np.vstack((a,b))    # 接收一个元组做参数
    
    array([[1, 2, 3],
           [4, 5, 6],
           [2, 3, 4],
           [5, 6, 7]])
    

    左右合并 np.hstack()

    np.hstack((a,b))
    
    array([[1, 2, 3, 2, 3, 4],
           [4, 5, 6, 5, 6, 7]])
    

    利用轴的概念直接合并 axis参数

    np.concatenate((a,b), axis = 0)
    
    array([[1, 2, 3],
           [4, 5, 6],
           [2, 3, 4],
           [5, 6, 7]])
    
    np.concatenate((a,b), axis = 1)
    
    array([[1, 2, 3, 2, 3, 4],
           [4, 5, 6, 5, 6, 7]])
    

    Numpy的分割

    纵向分割

    仅能等分,中间的参数表示分成的array个数

    A = np.arange(12).reshape(3,4)
    np.split(A, 2, axis=1)
    
    [array([[0, 1],
            [4, 5],
            [8, 9]]), array([[ 2,  3],
            [ 6,  7],
            [10, 11]])]
    

    横向分割

    np.split(A, 3, axis=0)
    
    [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
    

    不等量分割

    np.array_split(A, 3, axis=1)
    
    [array([[0, 1],
            [4, 5],
            [8, 9]]), array([[ 2],
            [ 6],
            [10]]), array([[ 3],
            [ 7],
            [11]])]
    

    Numpy的 = 与copy()

    赋值具有关联性,copy()是一个新的拷贝

    a
    
    array([[1, 2, 3],
           [4, 5, 6]])
    
    b = a    # 将a赋值给b
    b
    
    array([[1, 4, 3],
           [4, 5, 6]])
    
    a[0][1] = 4  #修改a中一个元素
    a
    
    array([[1, 4, 3],
           [4, 5, 6]])
    
    b  # b中对应元素也发生了改变
    
    array([[1, 4, 3],
           [4, 5, 6]])
    

    copy()的矩阵不会随之改变

    b = a.copy()
    a[1][1] = 11
    a
    
    array([[ 1,  4,  3],
           [ 4, 11,  6]])
    
    b
    
    array([[1, 4, 3],
           [4, 5, 6]])
    

    相关文章

      网友评论

        本文标题:【Python数据分析】Numpy详细教程

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