美文网首页Python数据分析
Python数据分析[2] - Numpy包

Python数据分析[2] - Numpy包

作者: 屹然1ran | 来源:发表于2021-02-20 16:41 被阅读0次

    ndarry: 多维度的向量

    Numpy为Numerical Python的缩写,是数据分析最重要的包之一,很多数据分析相关的包会依赖Numpy中的向量类型。

    向量类的数据配合向量化计算,会极大的加速计算的效率,这一点和R中的dply组函数有异曲同工之处。

    import numpy as np
    # 生成随机数
    data = np.random.randn(2, 3)
    data
    
    Out[113]: 
    array([[-0.8641422 ,  0.99312833, -0.80589659],
           [ 0.67432817,  1.05005674,  0.68455539]])
    

    如果对一个向量进行数学运算

    data*10
    Out[114]: 
    array([[-8.64142202,  9.9312833 , -8.05896586],
           [ 6.74328173, 10.50056741,  6.84555386]])
    
    data + data
    Out[115]: 
    array([[-1.7282844 ,  1.98625666, -1.61179317],
           [ 1.34865635,  2.10011348,  1.36911077]])
    

    使用shape方法和dtype方法可以查看一个array的形状与数据类型

    data.shape
    Out[116]: (2, 3)
    
    data.dtype
    Out[117]: dtype('float64')
    

    创建ndarrays

    使用np.array可以很简单的创建一个numpy向量

    np.array([1,2,3])
    Out[118]: array([1, 2, 3])
    
    np.array([[1,2,3], [1,2,3]])
    Out[120]: 
    array([[1, 2, 3],
           [1, 2, 3]])
    

    zeros, ones... 方法,可以创建值均为0,1... 的向量

    np.zeros((3,4))
    Out[121]: 
    array([[0., 0., 0., 0.],
           [0., 0., 0., 0.],
           [0., 0., 0., 0.]])
    
    np.ones((3,4))
    Out[123]: 
    array([[1., 1., 1., 1.],
           [1., 1., 1., 1.],
           [1., 1., 1., 1.]])
    

    arrange方法可以对array进行排序

    ndarrays数据类型

    ndarrays支持的数据类型如下


    ndarrays数据类型

    astype方法可以简单的对数据类型进行转换

    arr = np.array([1,2,3,4,5])
    
    arr.dtype
    Out[126]: dtype('int32')
    
    arr2 = arr.astype(np.float64)
    
    arr2.dtype
    Out[129]: dtype('float64')
    

    ndarrays的索引(indexing)与分页(slicing)

    一维的ndarrays的分页与python的list类似

    arr = np.arange(10)
    
    arr[5]
    Out[132]: 5
    
    arr[5:8]
    Out[133]: array([5, 6, 7])
    
    arr[5:8] = 0
    
    arr
    Out[135]: array([0, 1, 2, 3, 4, 0, 0, 0, 8, 9])
    

    重点: ndarrays的数据是从原始数据中读取出来的,例如如下

    arr = np.arange(10)
    
    arr
    Out[145]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    arr_slice = arr[5:8]
    
    arr_slice 
    Out[147]: array([5, 6, 7])
    
    arr_slice[0] = 100
    
    arr
    Out[149]: array([  0,   1,   2,   3,   4, 100,   6,   7,   8,   9])
    

    通过修改arr_slice中的数据,我们间接的修改了arr的数据。

    以下为一些二维array的slicing例子


    二维array slicing

    向量化函数

    sqrt, exp等方法,都是向量化函数

    arr = np.arange(10)
    arr
    Out[151]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    np.sqrt(arr)
    Out[154]: 
    array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
           2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ])
    
    np.exp(arr)
    Out[155]: 
    array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,
           5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03,
           2.98095799e+03, 8.10308393e+03])
    

    maximum可以选择多个向量中的最大值

    arr = np.arange(10)
    arr2 = arr[::-1]
    
    arr
    Out[158]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    arr2
    Out[159]: array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
    
    np.maximum(arr, arr2)
    Out[160]: array([9, 8, 7, 6, 5, 5, 6, 7, 8, 9])
    
    Unary ufuncs
    Binary universal functions
    Binary universal functions
    统计方法

    Reference
    Python for Data Analysis,2nd Edition

    相关文章

      网友评论

        本文标题:Python数据分析[2] - Numpy包

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