• Numpy库基础(20190804)


    1.Numpy基本介绍

    • NumPy是一个功能强大的Python库,主要用于对多维数组执行计算。
    • NumPy是numerical 和python的简拼。

    2.应用

    • 机器学习模型:主要对矩阵进行各种数值计算。
    • 图像处理和计算机图形学:
    • 数学任务:积分,微分,内插,外推。

    3.安装

    pip install numpy

    一切准备就绪就让我们操练起来吧!

    4、NumPy  Ndarray 对象

    • NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
    • ndarray 中的每个元素在内存中都有相同存储大小的区域。
    • ndarray 内部由以下内容组成:
        • 一个指向数据(内存或内存映射文件中的一块数据)的指针。

        • 数据类型或 dtype,描述在数组中的固定大小值的格子。

        • 一个表示数组形状(shape)的元组,表示各维度大小的元组。

        • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

                                   跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。

         

    创建一个 ndarray 只需调用 NumPy 的 array 函数即可:   

    numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

    实例:

    # dtype 参数  
    import numpy as np 
    a = np.array([1,  2,  3], dtype = complex)  
    print (a)

    结果:

    [ 1.+0.j,  2.+0.j,  3.+0.j]

    注:ndarray 对象由计算机内存的连续一维部分组成,并结合索引模式,将每个元素映射到内存块中的一个位置。内存块以行顺序(C样式)或列顺序(FORTRAN或MatLab风格,即前述的F样式)来保存元素。

    5、数据类型

    numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型。

    名称 描述
    bool_ 布尔型数据类型(True 或者 False)
    int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
    intc 与 C 的 int 类型一样,一般是 int32 或 int 64
    intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
    int8 字节(-128 to 127)
    int16 整数(-32768 to 32767)
    int32 整数(-2147483648 to 2147483647)
    int64 整数(-9223372036854775808 to 9223372036854775807)
    uint8 无符号整数(0 to 255)
    uint16 无符号整数(0 to 65535)
    uint32 无符号整数(0 to 4294967295)
    uint64 无符号整数(0 to 18446744073709551615)
    float_ float64 类型的简写
    float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
    float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
    float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
    complex_ complex128 类型的简写,即 128 位复数
    complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
    complex128

    复数,表示双 64 位浮点数(实数部分和虚数部分)

    数据类型对象 (dtype)(难搞哦!!!)

    dtype 对象是使用以下语法构造的:

    numpy.dtype(object, align, copy)

    实例:

    import numpy as np
    # int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
    dt = np.dtype('i4')
    print(dt)

    每个内建类型都有一个唯一定义它的字符代码,如下:

    字符对应类型
    b 布尔型
    i (有符号) 整型
    u 无符号整型 integer
    f 浮点型
    c 复数浮点型
    m timedelta(时间间隔)
    M datetime(日期时间)
    O (Python) 对象
    S, a (byte-)字符串
    U Unicode
    V 原始数据 (void)

    6、数组属性

    NumPy 数组的维数称为秩(rank),一维数组的秩为 1,二维数组的秩为 2,以此类推。

    在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。

    属性说明
    ndarray.ndim 秩,即轴的数量或维度的数量
    ndarray.shape 数组的维度,对于矩阵,n 行 m 列
    ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
    ndarray.dtype ndarray 对象的元素类型
    ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
    ndarray.flags ndarray 对象的内存信息
    ndarray.real ndarray元素的实部
    ndarray.imag ndarray 元素的虚部
    ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

     

    ndarray.flags 返回 ndarray 对象的内存信息,包含以下属性:

    属性描述
    C_CONTIGUOUS (C) 数据是在一个单一的C风格的连续段中
    F_CONTIGUOUS (F) 数据是在一个单一的Fortran风格的连续段中
    OWNDATA (O) 数组拥有它所使用的内存或从另一个对象中借用它
    WRITEABLE (W) 数据区域可以被写入,将该值设置为 False,则数据为只读
    ALIGNED (A) 数据和所有元素都适当地对齐到硬件上
    UPDATEIFCOPY (U) 这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新

    7、创建数组

    ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建。

    7.1  numpy.empty

    numpy.empty(shape, dtype = float, order = 'C')
    参数描述
    shape 数组形状
    dtype 数据类型,可选
    order 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

    示例: 

    
    
    import numpy as np
    x = np.empty([3,2], dtype = int)
    print ("x =" ,x)

    结果:

    注意 − 数组元素为随机值,因为它们未初始化。

    7.2 numpy.zeros

    numpy.zeros(shape, dtype = float, order = 'C')
    参数描述
    shape 数组形状
    dtype 数据类型,可选
    order 'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组
    import numpy as np
     
    # 默认为浮点数
    x = np.zeros(5) 
    print(x)
     
    # 设置类型为整数
    y = np.zeros((5,), dtype = np.int) 
    print(y)

    7.3  numpy.ones

    numpy.ones(shape, dtype = None, order = 'C')
    参数描述
    shape 数组形状
    dtype 数据类型,可选
    order 'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组
    import numpy as np
     
    # 默认为浮点数
    x = np.ones(5) 
    print(x)
     
    # 自定义类型
    x = np.ones([2,2], dtype = int)
    print(x)

    8、NumPy 从已有的数组创建数组

    8.1 numpy.asarray

    numpy.asarray(a, dtype = None, order = None)
    参数描述
    a 任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组
    dtype 数据类型,可选
    order 可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

    8.2 numpy.frombuffer

    numpy.frombuffer 用于实现动态数组。

    numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

    numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

    注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。

    参数描述
    buffer 可以是任意对象,会以流的形式读入。
    dtype 返回数组的数据类型,可选
    count 读取的数据数量,默认为-1,读取所有数据。
    offset 读取的起始位置,默认为0。

     pytnon 3.x:

    import numpy as np 
     
    s =  b'Hello World' 
    a = np.frombuffer(s, dtype =  'S1')  
    print (a)

    结果:

    8.3 numpy.fromiter

    numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。

    numpy.fromiter(iterable, dtype, count=-1)
    参数描述
    iterable 可迭代对象
    dtype 返回数组的数据类型
    count 读取的数据数量,默认为-1,读取所有数据
    import numpy as np 
     
    # 使用 range 函数创建列表对象  
    list=range(5)
    it=iter(list)
     
    # 使用迭代器创建 ndarray 
    x=np.fromiter(it, dtype=float)
    print(x)

    结果:

    9、NumPy 从数值范围创建数组

    9.1 numpy.arange

    numpy.arange(start, stop, step, dtype)
    参数描述
    start 起始值,默认为0
    stop 终止值(不包含)
    step 步长,默认为1
    dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。
    import numpy as np
     
    # 设置了 dtype
    x = np.arange(5, dtype =  float)  
    print (x)
    

      结果:

    9.2  numpy.linspace

    numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的;

    np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
    参数描述
    start 序列的起始值
    stop 序列的终止值,如果endpointtrue,该值包含于数列中
    num 要生成的等步长的样本数量,默认为50
    endpoint 该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。
    retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。
    dtype ndarray 的数据类型
    import numpy as np
    a =np.linspace(1,10,10,retstep= True)   #显示步长
     
    print(a)
    # 拓展例子
    b =np.linspace(1,10,10).reshape([10,1])
    print(b)
    

      结果:

    9.3 numpy.logspace

    numpy.logspace 函数用于创建一个于等比数列。

    np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
    参数描述
    start 序列的起始值为:base ** start
    stop 序列的终止值为:base ** stop。如果endpointtrue,该值包含于数列中
    num 要生成的等步长的样本数量,默认为50
    endpoint 该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。
    base 对数 log 的底数。(默认是10)
    dtype ndarray 的数据类型
    import numpy as np
    a = np.logspace(0,9,10,base=2)
    print (a)

    结果:

    2的0次方;2的1次方;2的2次方;2的3次方;。。。;2的9次方。

     

  • 相关阅读:
    未来行业
    百度网盘搜索方法
    JavaScript继承详解
    Win 7下破解Loadrunner 11(带中文版下载地址)
    NET下RabbitMQ实践[WCF发布篇]
    NET下RabbitMQ实践[示例篇]
    NET下RabbitMQ实践[配置篇]
    8个超炫的 Web 效果
    Windows下安装zip包解压版mysql
    键盘上相当于鼠标右键的快捷键和电脑快捷键大全
  • 原文地址:https://www.cnblogs.com/bltstop/p/11300517.html
Copyright © 2020-2023  润新知