数据分析相关概念

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='\n')

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

  行列组合

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

        numpy.row_stack((上,下))

        numpy.column_stack((左,右))

posted @ 2019-09-03 15:26  HelloBaby!  阅读(406)  评论(0编辑  收藏  举报