• 3 numpy模块


    Numpy
        什么是Numpy:Numeric Python
            Numpy模块是Python的一种开源的数值计算扩展。
                1 一个强大的N维数组对象Array
                2 比较成熟的(广播)函数库
                3 用于整合(C/C++)和Fortran代码的工具包
                4 实用的线性代数、傅里叶变换和随机数生成函数
                5 numpy和稀疏矩阵运算包scipy配合使用更加强大
        
    导入numpy库,并查看numpy版本
        注意:numpy模块不是python自带的,需要自己安装的。pip install numpy
     
        这是我要处理的图片 gtx.jpg
        必须要先安装这个模块 Pillow ,才能支持除png之外的格式的图片的读取。因为没有安装Pillow模块,会有如下报错:
    ValueError: Only know how to handle extensions: ['png']; with Pillow installed matplotlib can handle
     
    Pillow模块安装之后,就能正常读取图片内容了。
     
        读取的数组,元素值范围0-255。
     
    看来gtx 是numpy.ndarray类型的,如果需要对图片进行操作,是需要对numpy.ndarray的属性和方法熟悉的。下一步学习numpy.ndarray的属性和方法。
     
     
    再定义一个数组gtx2,是由gtx转换而来的,变成如下图所示的样子了。
     
     
    一、创建ndarray
        1 使用np.array() 由python list创建
            ·numpy默认ndarray的所有元素类型是相同的
            ·如果传进来的列表中包含不同的类型,则统一为同一类型,优先级 str>float>int
     
     
     
     
        numpy的3个属性:
            1 shape 查看数组是几维的。
        317 表示数组的高,行数
        500 表示数组的宽,列数
        3 表示颜色
     
        任何一张二位的图片转化为3维数组,长宽最后一维表示颜色。
     
     
    数组元素统一成同一种数据类型的元素
     
            n1.ndim    得到数组的维度数
     
            2 使用np的routines函数创建数组
                包含以下常见创建方法:
                1)np.ones(shape,dtype=None,order='C')   one表示创建的数组元素全是1
     

     
                2)np.zeros(shape,dtype=float,order='C')  zero表示创建的数组元素全是0

                
        
     
                3)np.full(shape,fill_value,dtype=None,order='C')  full表示可以自定义元素值fill_value
     
     

     
     
                4)np.eye(N,M=None,k=0,dtype=float)   对角线位置元素值为1,其他位置为0  满秩矩阵    N、M用来定义矩阵的高和宽的。
     
        这就是一个一元十次方程简化成这样,在线性代数中叫做满秩。
     
                5)np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
     
     
                6)np.arange([start,]stop,[step,]dtype=None)    左闭右开区间
    使用该方法创建ndarray时候,左闭右开。
     
                7)np.random.randint(low,high=None,size=None,dtype='l')
     
                8)np.random.randn(d0,d1...dn)    标准正态分布
     
                9)np.random.normal(loc=0.0,scale=1.0,size=None)
                        scale值越大其波动越厉害,scale=0.0 就没有波动了。
     
     
     
                10)np.random.random(size=None)   生成0到1的随机数,左闭右开
    随机生成一张图片。png格式的像素值 0-1  jpg格式像素值0-255
     
    =====================================
     
    三、ndarray的基本操作
     
        1、索引
            一维与列表完全一致 多维时同理
     
     
        2、切片
            一维与列表完全一致,多维时同理
            比如一个3维数组, n1[0:2,1:3,-2:-1]   最终切到要的元素。
     
        3、变形  使用reshape函数,注意参数是一个tuple,如果参数是个负数,直接转换成一维数组ndarray,不论负数值是多少。比价省事的做法就是 -1。
     

     
     
        4、级联 (将两个数组拼接在一起)
            ·1 np.concatenate() 级联需要注意的点:
            ·2 级联的参数是列表:一定要加中括号或小括号
            ·3 维度必须相同
            ·4 形状相符
            ·5 【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向
            ·6 可通过axis参数改变级来联的方向  
                axis = 0表示按行  
                axis = 1表示按列
     
                1. np.hstack 与 np.vstack
                    水平级联与垂直级联,处理自己,进行维度的变更。
                 
     
        5、切分
            与级联类似,三个函数完成切分工作:
                · np.split
                · np.vsplit   按行切
                · np.hsplit   按列切
     
     
     
            split默认情况下是对行进行切分
     
    Signature: np.split(ary, indices_or_sections, axis=0)
                ary 是要切割数数据源
                axis = 0 是对行进行切割  axis= 1 是对列进行切分
     
     
        6、副本
            所有赋值运算不会为ndarray的任何元素创建副本,对赋值后的对象的操作也对原来的对象生效。可以使用copy()函数创建副本。
     
     
    ==============================
     
    四:ndarray的聚合操作
        1、求和 np.sum
        2、最大最小值:np.max / np.min
     
     
     
     
        3、其他聚合操作
            np.sum
            np.prod
            np.mean    平均值  axis 的值是维度
            np.std        标准方程
            np.var
            np.min
            np.max
            np.argmin
            np.argmax
            np.median
            np.percentile
     
     
        操作文件:使用pandas打开文件president_heights.csv获取文件中的数据。
     
    就把文件内容读取出来了。CSV格式比较经常遇到的,就是从Oracle数据库中导出的文件。
     
     
     
     
    五、ndarray的矩阵操作
        
        1.基本矩阵操作
            
            1)算术运算符:
                ·加减乘除
     

     
     
     
            2)矩阵积 np.dot()
     
     
     
        2.广播机制
            【重要】ndarray广播机制的两条规则
                · 规则一:为缺失的维度补 1 (补一行或一列)
                · 规则二:假定缺失元素用已有值填充
     
     

     
     
     
     
        六、ndarray的排序,排序算法,面试经常问。

            
            
     
            1 快速排序
                np.sort()与ndarray.sort()都可以,但有区别:
                    · np.sort()不改变输入
                    · ndarray.sort()本地处理,不占用空间,但改变输入
                 
     
     
     
     
            2 部分排序
                np.partition(a,k)
                有时我们不是对全部数据感兴趣,只对最小或最大的一部分感兴趣
                    · 当k为正时,我们想要得到最小的k个数
                    · 当k为负时,我们想要得到最大的k个数
     
                
     
    只返回需要的这部分数,但这部分数是不会排序的。切片,排序即可。
     
     
     
     

  • 相关阅读:
    C++中的头文件和源文件
    串口VMIN VTIME 详解
    lms111,rplidar 方向和起始角
    Nginx访问限制配置
    Nginx请求限制配置
    Nginx模块详解
    Nginx默认配置语法
    Nginx编译参数详解
    Nginx安装目录详解
    Nginx的快速安装
  • 原文地址:https://www.cnblogs.com/avention/p/9063332.html
Copyright © 2020-2023  润新知