zoukankan      html  css  js  c++  java
  • Python开发:NumPy学习(一)ndarray数组

    一、数据维度

      一个数据表达一个含义,一组数据表达一个或多个含义。

      数据维度概念:一组数据的组织形式,其中有一维数据、二维数据、多维数据、高维数据。

      1、  一维数据

      一维数据由对等关系的有序或无序数据构成,采用线性方式组织。

      对应:列表、集合

    #列表有序
    [1,2,3,4,5]
    #集合无序
    {1,2,3,4,5}

      2、二维数据

      二维数据由多个一维数据构成,是一维数据的组合形式。

      对应:列表

    [[1,2,3],[4,5,6]]

      3、多维数据

      多维数据由一维或二维数据在新维度上扩展形成。

      对应:列表

    [[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]]

      4、高维数据

      高维数据仅使用最基本二元关系展示数据间的复杂结构。

      对应:字典或数据表示格式

    #字典一一对应为二元关系
    dict={
              "x1":"1",  
              "y1":"2",  
         }

      数据表示格式:JSON、XML、YAML等格式

    二、NumPy

      1、简介

      NumPy是一个开源的科学计算基础库,是SciPy、Pandas等数据处理或科学计算库的基础。

      2、主要功能:

      (1)、提供了一个强大的N维数组对象ndarray

        优点:

        1、数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。

        2、设置专门的数组对象,经过优化可以提升这类应用的运算速度。

        3、数组对象采用相同的数据类型,有助于节省运算和存储空间。

        实例:

    import numpy as np
    a=np.array([1,2,3,4,5])
    b=np.array([6,7,8,9,10])
    c=[]
    c=a**2+b**2
    print(c)

        

      (2)、提供了一组广播功能相关的函数,用来在数据间进行计算;

      (3)、整合了C/C++/Fortran代码,并提供整合工具;

      (4)、提供了线性代数、傅里叶变换、随机数生成等功能用于科学计算。

    三、ndarray:

      多维数组,由实际数据和描述这些数据的元数据(数据维度、数据类型)两部分构成。

      一般要求所有元素类型相同,数组下标从0开始。

      np.array()可以生成一个ndarray数组,输出成[]形式,元素由空格分割。

      两个属性:

      轴(axis):保存数据维度;秩(rank):轴的数量  

      ndarray对象的属性:

      1、ndim:秩,轴数量或维度数量

    import numpy as np
    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
    print(a.ndim)

      

      2、shape:ndarray对象尺度,即n行m列

    import numpy as np
    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
    print(a.shape)

      

      3、size:ndarray对象元素个数,为shape中n*m

    import numpy as np
    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
    print(a.size)

      

      4、dtype:ndarray对象的元素的类型

    import numpy as np
    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
    print(a.dtype)

      

      5、itemsize:ndarray对象中每个元素大小

    import numpy as np
    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
    print(a.itemsize)

      

    四、ndarray的相关操作

    1、创建:

      (1)、从Python中的列表、元组等

    import numpy as np
    #不声明数据类型,创建时会自动读取类型
    nd=np.array(list/tuple)
    import numpy as np
    #声明数据类型
    nd=np.array(list/tuple,dtype=np.int32)

      (2)、使用NumPy中函数

    函数 说明
    arange(n) 返回ndarray类型,元素从0到n-1
    ones(shape) 根据shape生成一个全1数组
    zeros(shape) 根据shape生成全0数组
    full(shape,value) 根据shape生成一个数组,每元素值全为value
    eye(n) 一个正方形的n*n单位矩阵,对角线为1,其余为0
    ones_like(a) 根据数组a的形状生成一个全1数组
    zeros_like(a) 根据数组a的形状生成一个全0数组
    full_like(a,value) 根据数组a的形状生成一个数组,每元素值全为value
    linspace() 根据起止数据等间距地填充数据,形成数组
    concatenate() 根据两个或多个数组合并成一个新数组
     
      arange函数默认是整数类型,其他函数默认为float类型,np.ones((1,2),dtype=np.int32)将ones生成的数组类型为int32。
      举例:
     
      【2,20】linspace前闭合后闭合等分:
    import numpy as np
    nd=np.linspace(2,20,10)
    print(nd)
      

      

      添加endpoint=Flase,【2,20)linspace前闭合后开放等分:

    import numpy as np
    nd=np.linspace(2,20,10,endpoint=False)
    print(nd)

      

      concatenate合并:

    import numpy as np
    nd=np.linspace(2,20,10)
    nd2=np.linspace(2,10,3)
    nd3=np.concatenate((nd,nd2))
    print(nd3)

      

      (3)、从字节流中

      (4)、从文件中读取特定格式

    2、变换

      (1)、维度变换

      reshape(不改变原数组)

    import numpy as np
    nd=np.full((2,4,8),6)
    a=nd.reshape((8,8))
    print(a)
    print()
    print(nd)

      

      resize(改变原数组)

    import numpy as np
    nd=np.full((2,4,8),6)
    print(nd)
    print()
    nd.resize((8,8))
    print(nd)

      

      (2)、元素类型变换

      astype(返回一个新数组)

    import numpy as np
    nd=np.full((2,4,8),6,dtype=int)
    print(nd)
    nd2=nd.astype(np.float)
    print()
    print(nd2)

      

      (3)、ndarray数组转化成列表

      tolist()

    import numpy as np
    nd=np.full((2,4,2),1)
    print(nd)
    nd2=nd.tolist()
    print()
    print(nd2)

      

    3、索引

      获取数组中特定位置元素的过程。

      一维:和python列表的索引方式相同

      多维:nd[x,y,z]

    import numpy as np
    nd=np.arange(18).reshape((2,3,3))
    print(nd)
    print("索引的元素为:"+str(nd[1,2,2]))

      

    4、切片

      获取数组元素子集的过程

      一维:和python列表的切片方式相同

      多维:

    import numpy as np
    nd=np.arange(18).reshape((2,3,3))
    print(nd)
    print("切出来的:")
    print(nd[:,:,::2])

      

    5、运算

      数组与标量间的计算则为数组中每个元素与标量的计算。

      示例:

    import numpy as np
    nd=np.arange(18).reshape((2,3,3))
    print(nd)
    nd=nd/2
    print("运算结果:")
    print(nd)

      

      函数如下:

    函数  说明 

     abs(n)

    fabs(n)

    计算数组各元素的绝对值 
     sqrt(n) 计算数组各元素的平方根 
     square(n) 计算数组各元素的平方 
     rint(n) 各元素四舍五入 
     modf(n) 各元素的整数和小数部分分成两个独立数组 
     cos(n) 三角函数 
     exp(n) 各元素指数值 
     sign(n) 各元素的符号值,正数显示+,负数显示-,0显示0 
     log(n) 计算各元素对数 

     ceil(n)

    floor(n)

    计算各元素ceiling值或floor值 
  • 相关阅读:
    其他
    Win10
    Win10
    面向对象与设计模式
    Git
    Java
    Git
    Git
    Git
    一、I/O操作(File文件对象)
  • 原文地址:https://www.cnblogs.com/guobin-/p/11211653.html
Copyright © 2011-2022 走看看