📜  NumPy Python中的数据类型对象(dtype)(1)

📅  最后修改于: 2023-12-03 15:03:18.713000             🧑  作者: Mango

NumPy Python中的数据类型对象(dtype)

在NumPy中,在数组中存储的元素类型由其数据类型对象(dtype)表示。每个ndarray对象都有一个dtype属性,该属性指定在数组中存储的元素的数据类型。

NumPy支持各种数据类型,包括数值类型,布尔类型,对象类型以及字符串类型。可以使用numpy.dtype()函数创建自定义数据类型。

数值类型

NumPy支持的主要数值类型包括:

  • bool_: 布尔类型,可能是True或False
  • int_: 默认整数类型(类似于long,int32或int64)
  • intc: C风格的int32类型
  • intp: 用于索引的整数类型(类似于ssize_t,int32或int64)
  • int8: 字节(-128到127)
  • int16: 16位整数(-32768到32767)
  • int32: 32位整数(-2147483648到2147483647)
  • int64: 64位整数(-9223372036854775808到9223372036854775807)
  • uint8: 8位无符号整数(0到255)
  • uint16: 16位无符号整数(0到65535)
  • uint32: 32位无符号整数(0到4294967295)
  • uint64: 64位无符号整数(0到18446744073709551615)
  • float_: float64的简写
  • float16: 半精度浮点数:符号位,5位指数,10位尾数
  • float32: 单精度浮点数:符号位,8位指数,23位尾数
  • float64: 双精度浮点数:符号位,11位指数,52位尾数
  • complex_: complex128的简写
  • complex64: 复数,由两个32位浮点数表示(实数和虚数部分)
  • complex128: 复数,由两个64位浮点数表示(实数和虚数部分)
dtype的属性

dtype对象有以下属性:

  • name: 数据类型的名称。
  • shape: 用于描述该数据类型的对象的形状。
  • str: 描述数据类型的字符串。
  • type: 底层数据类型对象(例如,int8表示<type 'numpy.int8'>)。
  • kind:字符代码,用于唯一标识数据类型的字符(例如,'i'表示整数)。
示例

以下是一些有关dtype的示例:

import numpy as np

# 创建一个整数数组
a = np.array([1, 2, 3, 4, 5], dtype=np.int32)

# 输出数组的数据类型
print(a.dtype)  # 输出 int32

# 创建一个浮点数数组
b = np.array([1.0, 2.0, 3.0, 4.0, 5.0], dtype=np.float32)

# 输出数组的数据类型
print(b.dtype)  # 输出 float32

# 创建一个复数数组
c = np.array([1 + 2j, 2 + 3j, 3 + 4j, 4 + 5j, 5 + 6j], dtype=np.complex64)

# 输出数组的数据类型
print(c.dtype)  # 输出 complex64

自定义数据类型:

import numpy as np

# 自定义结构体数据类型
student = np.dtype([('name', 'S20'), ('age', 'i1'), ('marks', 'f4')])

# 创建一个包含结构体数据的数组
a = np.array([('John', 22, 65.5), ('Michael', 18, 75.2)], dtype=student)

# 打印数组
print(a)

# 输出一个元素
print(a[0])

以上代码将创建一个名为student的自定义结构体数据类型,其包含nameagemarks字段,分别使用字符串和浮点数类型表示。

然后,使用该自定义数据类型来创建一个包含数据的数组,该数组包含两个结构类型的数据(John和Michael)。最后,打印数组及其元素。

输出结果为:

[(b'John', 22, 65.5) (b'Michael', 18, 75.19999695)]
(b'John', 22, 65.5)

该结果表明,该数组有两个元素,每个元素包含名字,年龄和分数。元素可以按索引访问。