NumPy - 数据类型

  • 简述

    NumPy 支持的数字类型比 Python 多得多。下表显示了 NumPy 中定义的不同标量数据类型。
    序号 数据类型和描述
    1
    bool_
    存储为字节的布尔值(真或假)
    2
    int_
    默认整数类型(与 C long 相同;通常为 int64 或 int32)
    3
    intc
    与 C int 相同(通常为 int32 或 int64)
    4
    intp
    用于索引的整数(与 C ssize_t 相同;通常为 int32 或 int64)
    5
    int8
    字节(-128 到 127)
    6
    int16
    整数(-32768 到 32767)
    7
    int32
    整数(-2147483648 到 2147483647)
    8
    int64
    整数(-9223372036854775808 到 9223372036854775807)
    9
    uint8
    无符号整数(0 到 255)
    10
    uint16
    无符号整数(0 到 65535)
    11
    uint32
    无符号整数(0 到 4294967295)
    12
    uint64
    无符号整数(0 到 18446744073709551615)
    13
    float_
    float64 的简写
    14
    float16
    半精度浮点数:符号位、5 位指数、10 位尾数
    15
    float32
    单精度浮点数:符号位、8 位指数、23 位尾数
    16
    float64
    双精度浮点数:符号位、11 位指数、52 位尾数
    17
    complex_
    complex128 的简写
    18
    complex64
    复数,由两个 32 位浮点数(实部和虚部)表示
    19
    complex128
    复数,由两个 64 位浮点数(实部和虚部)表示
    NumPy 数值类型是 dtype(数据类型)对象的实例,每个对象都有独特的特征。dtypes 可用作 np.bool_、np.float32 等。
  • 数据类型对象 (dtype)

    数据类型对象描述了与数组相对应的固定内存块的解释,具体取决于以下方面 -
    • 数据类型(整数、浮点数或 Python 对象)
    • 数据大小
    • 字节顺序(小端或大端)
    • 在结构化类型的情况下,字段的名称,每个字段的数据类型以及每个字段占用的内存块的一部分。
    • 如果数据类型是子数组,它的形状和数据类型
    字节顺序是通过在数据类型前加上“<”或“>”来决定的。'<' 表示编码是小端(最低有效存储在最小地址中)。'>' 表示编码是大端(最高有效字节存储在最小地址中)。
    使用以下语法构造 dtype 对象 -
    
    numpy.dtype(object, align, copy)
    
    参数是 -
    • Object− 转换为数据类型对象
    • Moogn− 如果为 true,则向字段添加填充以使其类似于 C-struct
    • Copy- 制作 dtype 对象的新副本。如果为 false,则结果是对内置数据类型对象的引用

    示例 1

    
    # using array-scalar type 
    import numpy as np 
    dt = np.dtype(np.int32) 
    print dt
    
    输出如下 -
    
    int32
    

    示例 2

    
    #int8, int16, int32, int64 can be replaced by equivalent string 'i1', 'i2','i4', etc. 
    import numpy as np 
    dt = np.dtype('i4')
    print dt 
    
    输出如下 -
    
    int32
    

    示例 3

    
    # using endian notation 
    import numpy as np 
    dt = np.dtype('>i4') 
    print dt
    
    输出如下 -
    
    >i4
    
    以下示例显示了结构化数据类型的使用。在这里,要声明字段名称和相应的标量数据类型。

    示例 4

    
    # first create structured data type 
    import numpy as np 
    dt = np.dtype([('age',np.int8)]) 
    print dt 
    
    输出如下 -
    
    [('age', 'i1')] 
    

    示例 5

    
    # now apply it to ndarray object 
    import numpy as np 
    dt = np.dtype([('age',np.int8)]) 
    a = np.array([(10,),(20,),(30,)], dtype = dt) 
    print a
    
    输出如下 -
    
    [(10,) (20,) (30,)]
    

    例 6

    
    # file name can be used to access content of age column 
    import numpy as np 
    dt = np.dtype([('age',np.int8)]) 
    a = np.array([(10,),(20,),(30,)], dtype = dt) 
    print a['age']
    
    输出如下 -
    
    [10 20 30]
    

    例 7

    以下示例定义了一种结构化数据类型,称为student带有字符串字段“名称”,一个integer field“年龄”和一个float field'分数'。此 dtype 应用于 ndarray 对象。
    
    import numpy as np 
    student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
    print student
    
    输出如下 -
    
    [('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])
    

    例 8

    
    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'- 布尔值
    • 'i'- (有符号)整数
    • 'u'− 无符号整数
    • 'f'− 浮点数
    • 'c'− 复数浮点
    • 'm'- 时间增量
    • 'M'- 日期时间
    • 'O'- (Python) 对象
    • 'S', 'a'- (字节)字符串
    • 'U'- 统一码
    • 'V'− 原始数据(无效)