zoukankan      html  css  js  c++  java
  • Python机器学习(三十六)NumPy 数据类型

    NumPy提供的数值类型,数值范围比Python提供的数值类型更大。NumPy的数值类型,如下表所示:

    SN数据类型描述
    1 bool_ 布尔值,取值ture/false,占用一个字节
    2 int_ 是integer的默认类型。与C语言中的long类型相同,有可能是64位或32位。
    3 intc 类似于C语言中的整数类型(int),表示32位或64位的整型。
    4 intp 表示用于索引的整数。
    5 int8 8位整数,值的范围是-128到127。
    6 int16 2字节(16位)整数。范围是-32768到32767。
    7 int32 4字节(32位)的整数。范围是-2147483648到2147483647。
    8 int64 8字节(64位)整数。范围是-9223372036854775808到9223372036854775807。
    9 uint8 1字节(8位)无符号整数。
    10 uint16 2字节(16位)无符号整数。
    11 uint32 4字节(32位)无符号整数。
    12 uint64 8字节(64位)无符号整数。
    13 float_ 与float64相同。
    14 float16 半精度浮点数。5位保留给指数,10位保留给尾数,1位保留给符号。
    15 float32 单精度浮点数。8位保留给指数,23位保留给尾数,1位保留给符号。
    16 float64 双精度浮点数。指数保留11位,尾数保留52位,符号保留1位。
    17 complex_ 与complex128相同。
    18 complex64 复数,实数和虚数各占32位。
    19 complex128 复数,实数和虚数各占64位。

    上述所有数值类型,都可由dtype描述。

    NumPy 数据类型对象(dtype)

    数据类型对象/dtype,是描述数组中元素数据类型的对象。具体内容包括:

    • 数据类型(整数、浮点数或Python对象)
    • 数据长度
    • 字节顺序(小端或大端)
    • 在结构化类型中,字段名称、字段数据类型等。
    • 如果数据类型是子数组,则会包含其形状和数据类型

    字节顺序由数据类型的前缀(‘<‘或’>’)决定。'<‘表示小端,’>’表示大端。

    我们可以使用以下语法,创建一个dtype对象。

    numpy.dtype(object, align, copy) 

    参数:

    • object: 要转换为dtype类型的对象。
    • align: 布尔值。如果为真,则添加额外的填充,使其等效于C结构体
    • copy: 创建一个新的dtype对象副本。如果为false,则结果是对内置数据类型对象的引用

    示例

    import numpy as np 
    dt = np.dtype(np.int32) 
    print(dt)

    输出

    int32

    示例

    #int8, int16, int32, int64 等价于字符串 'i1', 'i2','i4', etc. 
    import numpy as np 
    
    dt = np.dtype('i4')
    print(dt)

    输出

    int32

    示例

    # 使用字节顺序标记
    import numpy as np 
    dt = np.dtype('>i4') 
    print(dt)

    输出

    >i4

    创建结构化数据类型

    我们可以创建类似字典的数据类型,包括字段名与字段值。

    下面的示例展示了结构化数据类型的使用。

    示例

    # 先创建结构化数据类型
    import numpy as np 
    dt = np.dtype([('age',np.int8)]) # 格式是:[('字段名', 字段类型)]
    print(dt) 

    输出

    [('age', 'i1')] 

    示例

    # 现在将它应用到ndarray对象
    import numpy as np 
    
    dt = np.dtype([('age',np.int8)]) 
    a = np.array([(10,),(20,),(30,)], dtype = dt) 
    print(a) 

    输出

    [(10,) (20,) (30,)]

    示例

    # 字段名可用于访问列的内容
    import numpy as np 
    
    dt = np.dtype([('age',np.int8)]) 
    a = np.array([(10,),(20,),(30,)], dtype = dt) 
    print(a['age'])

    输出

    [10 20 30]

    示例

    下面的示例定义了一个名为student的结构化数据类型,其中包含字符串字段“name”、整数字段“age”和浮点字段“marks”。然后将此dtype应用于ndarray对象。

    import numpy as np 
    student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
    print(student)

    输出

    C:Anaconda3python.exe "C:Program FilesJetBrainsPyCharm 2019.1.1helperspydevpydevconsole.py" --mode=client --port=63681
    import sys; print('Python %s on %s' % (sys.version, sys.platform))
    sys.path.extend(['C:\app\PycharmProjects', 'C:/app/PycharmProjects'])
    Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]
    Type 'copyright', 'credits' or 'license' for more information
    IPython 7.12.0 -- An enhanced Interactive Python. Type '?' for help.
    PyDev console: using IPython 7.12.0
    Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] on win32
    runfile('C:/app/PycharmProjects/ArtificialIntelligence/test.py', wdir='C:/app/PycharmProjects/ArtificialIntelligence')
    [('name', 'S20'), ('age', 'i1'), ('marks', '<f4')]
    import numpy as np 
    
    student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
    a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
    print(a)

    输出

    [('abc', 21, 50.0), ('xyz', 18, 75.0)]

    每个内置数据类型都有一个唯一标识它的字符代码。

    • ‘b’ − boolean
    • ‘i’ − (signed) integer
    • ‘u’ − unsigned integer
    • ‘f’ − floating-point
    • ‘c’ − complex-floating point
    • ‘m’ − timedelta
    • ‘M’ − datetime
    • ‘O’ − (Python) objects
    • ‘S’, ‘a’ − (byte-)string
    • ‘U’ − Unicode
    • ‘V’ − raw data (void)
  • 相关阅读:
    Matlab P文件——加快Matlab程序,保护你的算法
    电烙铁的使用
    CV、PR方向的资源
    遗传算法初接触
    Linux进程控制
    C语言编程优化运行速度
    用MATLAB优化工具箱解线性规划
    50、linux shell命令,netstat,traceroute
    51、linux shell命令,route,ifconfig
    56、vi常见用法,多窗口模式,标记,多文件编辑,快捷操作及设置
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/13159177.html
Copyright © 2011-2022 走看看