美文网首页我爱编程
python数据分析(1)--numpy

python数据分析(1)--numpy

作者: 小吵闹123 | 来源:发表于2018-01-15 22:48 被阅读130次

    简介

    NumPy系统是Python的一种开源的数值计算扩展,可用来存储和处理大型矩阵。

    numpy中的array

    ndarray是numpy提供的一种数组,python的数组可以存放各种类型和对象,运行速度下降,而ndarray为了提高运行速度,底层用c实现,限定只能使用一种类型。ndarray有以下几个常用属性

    属性 说明
    shape 几行几列
    ndim 数组维度
    dtype 数组元素的类型
    itemsize 数组中每个元素的大小
    size 数组中元素的个数

    下面分别打印以下这几个属性

    list = [[1,2,3], [4,5,6], [7,8,9]]
    # 新建一个元素类型为int64的数组
    numpy_list = numpy.array(list, dtype=numpy.int64)
    print(numpy_list.shape)
    print(numpy_list.ndim)
    print(numpy_list.dtype)
    print(numpy_list.itemsize)
    print(numpy_list.size)
    

    结果如下

    (3, 3)  
    2  
    int64
    8
    9
    

    常用array

    array 说明
    numpy.zeros[row, col] 全零数组
    numpy.ones[row, col] 全一数组
    numpy.random.rand 生成随机数
    numpy.random.randInt(low, hight) 生成指定范围内的随机整数
    numpy.random.randn 正态分布随机数
    numpy.random.choice() 从指定的数组中生成随机数
    numpy.random.beta beta分布
    print(numpy.zeros([2, 3]))
    print(numpy.ones([3, 5]))
    print(numpy.random.rand())
    print(numpy.random.randint(1,2))
    print(numpy.random.randn())
    print(numpy.random.beta(1, 1, 2))
    
    [[ 0.  0.  0.]
     [ 0.  0.  0.]]
    [[ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]]
    0.6256807713479122
    1
    1.1866001408917326
    [ 0.68579746  0.93474434]
    

    常用操作

    以下的list都是numpy的array

    函数 说明
    numpy.arange(low, high) 产生等差数列,范围[1,10)
    list.reshape([row, col]) 将数组转换成指定行列的数组
    numpy.exp(list) 指数
    numpy.sin(list) 三角函数
    numpy.log(list) 对数
    list.sum(axis) 求和,axis指对数组深入的程度
    list.max(axis) 最大值
    list.min(axis) 最小值
    list1+list2 数组元素相加
    list1-list2
    list1*list2
    list1/list2
    numpy.dot() 矩阵点乘
    numpy.concatenate(list1, list2) 追加数组
    numpy.vstack(list1, list2)
    numpy.hstack(list1, list2)
    munpy.split(list, n) 将数组切分成n份
    numpy.copy(list) 拷贝array

    测试程序

    list = numpy.arange(1, 9)
    print("等差数列")
    print(list)
    #-1为默认值
    print("转换多维数组")
    print(list.reshape(2,-1))
    print("指数计算")
    print(numpy.exp(list.reshape(2, -1)))
    l = [[1,2,3], [4,5,6], [7,8,9]]
    numpy_list = numpy.array(l)
    print("求和计算")
    # 深度为1的结果
    print("axis=0")
    print(numpy_list.sum(axis=0))
    # 深度为2的结果
    print("axis=1")
    print(numpy_list.sum(axis=1))
    
    print("数组相加")
    list1 = numpy.array([[1,2,3], [4,5,6]])
    list2 = numpy.array([[2,3,4], [3,4,5]])
    print(list1 + list2)
    

    输出结果

    等差数列
    [1 2 3 4 5 6 7 8]
    转换多维数组
    [[1 2 3 4]
     [5 6 7 8]]
    指数计算
    [[  2.71828183e+00   7.38905610e+00   2.00855369e+01   5.45981500e+01]
     [  1.48413159e+02   4.03428793e+02   1.09663316e+03   2.98095799e+03]]
    求和计算
    axis=0
    [12 15 18]
    axis=1
    [ 6 15 24]
    数组相加
    [[ 3  5  7]
     [ 7  9 11]]
    

    矩阵操作和线性方程组

    函数 说明
    numpy.eye() 生成单位矩阵
    inv(list) 求逆矩阵
    list.transpose() 求转置矩阵
    det(list) 求矩阵的行列式
    eig(list) 求特征值和特征向量,返回值第一个元组为特征值,第二个元组是特征向量
    solve(list, y) 求解方程组

    测试程序

    #encoding-utf8
    
    import numpy
    from numpy.linalg import *
    
    def main():
        print("单位矩阵")
        print(numpy.eye(3))
        
        list = numpy.array([[3, 5], [7, 9]])
        print("逆矩阵")
        print(inv(list))
        print("转置矩阵")
        print(list.transpose())
        print("矩阵行列式")
        print(det(list))
        print("特征值和特征向量")
        print(eig(list))
    
        print("求解二元方程: 3x+7y=2, 5x+9y=5")
        y = numpy.array([[2], [5]])
        print(solve(list, y))
        pass
        
    if __name__ == '__main__':
        main()
    

    输出结果

    单位矩阵
    [[ 1.  0.  0.]
     [ 0.  1.  0.]
     [ 0.  0.  1.]]
    逆矩阵
    [[-1.125  0.625]
     [ 0.875 -0.375]]
    转置矩阵
    [[3 7]
     [5 9]]
    矩阵行列式
    -8.0
    特征值和特征向量
    (array([ -0.63324958,  12.63324958]), array([[-0.80897568, -0.46067886],
           [ 0.58784211, -0.88756689]]))
    求解二元方程
    [[ 0.875]
     [-0.125]]
    

    其它

    函数 说明
    numpy.fft.fft() FTT计算
    numpy.corrcoef() 计算相关系数
    numpy.poly1d() 生成一元多次函数

    测试程序

    #encoding-utf8
    
    import numpy
    
    def main():
        print("FFT")
        print(numpy.fft.fft(numpy.ones([1,6])))
        print("相关系数")
        print(numpy.corrcoef([1,0,1], [0,1,0]))
        print("生成一元多次函数")
        print(numpy.poly1d([1,2,3]))
        pass
        
    if __name__ == '__main__':
        main()
    

    输出结果

    FFT
    [[ 6.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j  0.+0.j]]
    相关系数
    [[ 1. -1.]
     [-1.  1.]]
    生成一元多次函数
       2
    1 x + 2 x + 3
    

    小结

    以上就是numpy简单的使用,numpy主要用于对矩阵的操作和变换,对矩阵计算简化过程,可以提供很大的便利。

    相关文章

      网友评论

        本文标题:python数据分析(1)--numpy

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