• 数据分析相关概念


    1.概念

    1.矢量:矢量是指一堆数形成的集合。多维数组也叫做矢量化计算。  单独一个数叫做量标。

    2.多维数组:Numpy对多维数组的定义:用numpy.ndarray类(ndarray中,n代表n个数,d代表dimision维度)

      ndarray本身是一个类,有这个类实例化出来的对象,就是多维数组。

      多维数组也是一个对象。

    3.关于维度的属性

      shape属性

        shape属性的值是一个元祖类型,一个元祖内包含多个元素。分别是从高到低来表示它的每一个维度的数。即高维度到低维度。

    2.Numpy的内置类型和自定义类型

    2.1.内置类型

      优点:可指定数据类型所占内存是多少、可灵活变化。

      缺点:因为具有灵活可变性,会牺牲一部分性能。(因需要留出足够多空间)  无法使用固定内存地址的计算方法,只能用动态来完成,有关地址运算就要占用运行时间。

      注意:在Numpy中为每一种类型都提供了固定的大小,所以有关地址运算完全可以通过类型来确定。Numpy定义了一套自己的独立的数据类型体系。它的数据类型有固定长度。字节数都是固定的。

    eg:NUmpy.bool      一个布尔占一个字节。

      有符号版本:

    • int8    1字节有符号类型      
    • int16    2字节有符号类型    
    • int32   4字节有符号类型

      无符号版本(只有正数,没有负数:

    • uint8    1字节无符号类型      
    • uint16    2字节无符号类型    
    • uint32   4字节无符号类型。  

      浮点类型:  

    • float16    2字节浮点型      
    • float32    4字节浮点型    
    • float64   8字节浮点型     
    • 注:浮点型字节数越大精度越高,浮点型都是有符号的。

      复数类型(实部和虚部个用一个4字节浮点型表示):

    • complex64   8字节复数型         
    • complex128 16字节复数型  
    • 注:一个复数等于两个浮点型。

      字符串类型(str_):字符串类型没有规定多少字节,因为字符串类型取决于字符串Unicode有多长;字符串类型的长度根据字符窜所包含的字符来决定,有多少个字节,就有多少个字节。

    2.2.自定义类型

       1.直接使用内置类型的原始名

      2.使用紧凑类型格式(类型编码字符串)

    简化操作:可以用更少的字符串来表示

    全称 简化格式
    Numpy.int8 i1
    int16 i2 
    Uint32 U4
    Float16 f8
    complex128 c16

      3.多字节的整数存在大小端序

        对于多字节整数可以加上字节序前缀。

        前缀类型:

        ‘’<‘’ ,小端字节序,低数位低地址

          "=" ,系统默认,不能人为指定,由系统决定

         ">",大端字节序,低数位高地址

      备注:关于字节序:不需要添加字节序的有单字节整数、布尔值、复数类型、浮点型。

        Numpy.str   =>U+字符数

        Unicode 本身就是多字节整数

        一个Unicode可以看作一个uint32.它也存在大小端字节序

        Numpy.bool   => b

      注:Numpy提供的是Python的封装,用自定义类型方法可以完成一个元素不同类型的访问;或把一个元素用不同类型来组合,弥补了Numpy数组元素同质情况。

    3.Numpy切片

      Numpy与Python切片相似

      数组[起始:终止:步长]   可以针对多维数组进行切片。

      可以针对多维来切片

    a =np.arange(1,10)
    print(a)
    
    print(a[:3])
    print(a[3:6])
    print(a[6:])
    print(a[::-1])
    print(a[:-4:-1])
    
    print(a[-4:-7:-1])
    
    b = np.arange(1,25).reshape(2,3,4)
    print(b)
    print(b[:,:,0])
    print(b[0,:,:])
    print(b[0,1,::2])
    
    print(b[-1,1:,2:])
    

    4.改变维度

      分为四种方式:  

        视图变维:针对一个数组对象获取不同维度的视图

            方法:数组.reshape(新维度)-->数组新维度视图  

               数组。ravel()-->数组的一维视图

        复制变维(不同维度的拷贝):

          针对一个数组对象获取其不同维度的副本

          方法:flatten()-->数组的一位副本

          功能:在获得原数据实例的同时获得了拷贝,也就是副本

        就地变维

          数组.shape=(新维度)

            等价于

          数组.resize(新维度)

         视图转置

          可以理解为行列互换

          数组.transpose()-->数组的转置视图

            等价于

          数组.T  --->转置视图属性

    5.组合和拆分

      垂直组合

        numpy.vstack((上,下))

      垂直拆分

        numpy.vsplit(数组,份数)

         例如:a,b =np.vsplit(c,2)

      水平组合

        numpy.hstack((上,下))

      水平拆分

        numpy.hsplit(数组,份数)

         例如:a,b =np.hsplit(c,2)

       深度组合和深度拆分

        c=np.dstack((前,后))

        a,b=np.dsplit((数组,份数))

        备注:前后布局,用第三个垂直于平面来截线,截到这部分以数组形式组合起来,构成一个三维数组。

           这三个截面就是三个页面,每个页面上都有一个二维数组来自于所对应的行,同时还做了转置,截到的行转成列。

        深度拆分:

          a,b = np.dsplit(c,2)

          print(a.T[0].T,b.T[0].T,sep=' ')

          T[0].T的意思是转置取0

      行列组合

        特点:只能组合,不能拆分

            numpy.row_stack((上,下))

            numpy.column_stack((左,右))

  • 相关阅读:
    遇到的问题(css设置background 和 JS获取元素属性)
    布局
    CSS基础总结
    慕课网课程学习--焦点轮播图
    慕课网课程学习--JS事件探秘
    慕课网课程学习--信息排列效果
    HTML5-drag/drop
    "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Description Resource Path Location Type Target runtime apache-tomcat-8.0.30 is not defined.
    Spring注解
  • 原文地址:https://www.cnblogs.com/mainstream/p/11453286.html
Copyright © 2020-2023  润新知