Python NumPy教程之数据类型对象详解

作者:海拥 时间:2022-03-29 09:05:19 

每个 ndarray 都有一个关联的数据类型 (dtype) 对象。这个数据类型对象(dtype)告诉我们数组的布局。这意味着它为我们提供了以下信息:

  • 数据类型(整数、浮点数、Python 对象等)

  • 数据大小(字节数)

  • 数据的字节顺序(小端或大端)

  • 如果数据类型是子数组,它的形状和数据类型是什么。

ndarray 的值存储在缓冲区中,可以将其视为连续的内存字节块。所以这些字节将如何被解释由dtype对象给出。  

构造数据类型(dtype)对象

数据类型对象是 numpy.dtype 类的一个实例,可以使用numpy.dtype.

参数:

obj: 要转换为数据类型对象的对象。

align : [bool, optional] 向字段添加填充以匹配 C 编译器为类似 C 结构输出的内容。

copy : [bool, optional] 制作数据类型对象的新副本。如果为 False,则结果可能只是对内置数据类型对象的引用。

# Python 程序创建数据类型对象
import numpy as np

# np.int16 被转换为数据类型对象。
print(np.dtype(np.int16))

输出:

int16

# Python 程序创建一个包含 32 位大端整数的数据类型对象
import numpy as np

# i4 表示大小为 4 字节的整数
# > 表示大端字节序和
# < 表示小端编码。
# dt 是一个 dtype 对象
dt = np.dtype('>i4')

print("Byte order is:",dt.byteorder)

print("Size is:", dt.itemsize)

print("Data type is:", dt.name)

输出:

Byte order is: >
Size is: 4
Name of data type is: int32

类型说明符(在上述情况下为 i4)可以采用不同的形式:

b1、i1、i2、i4、i8、u1、u2、u4、u8、f2、f4、f8、c8、c16、a(表示字节、整数、无符号整数、浮点数、指定字节长度的复数和定长字符串)

int8,...,uint8,...,float16, float32, float64, complex64, complex128(这次是大小)

注意:  dtype 与 type 不同。

# 用于区分类型和数据类型的 Python 程序。
import numpy as np

a = np.array([1])

print("type is: ",type(a))
print("dtype is: ",a.dtype)

输出:

type is:    
dtype is:  int32

具有结构化数组的数据类型对象

数据类型对象对于创建结构化数组很有用。结构化数组是包含不同类型数据的数组。可以借助字段访问结构化数组。

字段就像为对象指定名称。在结构化数组的情况下,dtype 对象也将是结构化的。

# 用于演示字段使用的 Python 程序
import numpy as np

# 一种结构化数据类型,包含一个 16 字符的字符串(在“name”字段中)和两个 64 位浮点数的子数组(在“grades”字段中)

dt = np.dtype([('name', np.unicode_, 16),
              ('grades', np.float64, (2,))])

# 具有字段等级的对象的数据类型
print(dt['grades'])

# 具有字段名称的对象的数据类型
print(dt['name'])

输出:

('<f8', (2,))

# Python 程序演示了数据类型对象与结构化数组的使用。
import numpy as np

dt = np.dtype([('name', np.unicode_, 16),
              ('grades', np.float64, (2,))])

# x 是一个包含学生姓名和分数的结构化数组。
# 学生姓名的数据类型是np.unicode_,分数的数据类型是np.float(64)
x = np.array([('Sarah', (8.0, 7.0)),
             ('John', (6.0, 7.0))], dtype=dt)

print(x[1])

print("Grades of John are: ", x[1]['grades'])
print("Names are: ", x['name'])

输出:

('John', [ 6.,  7.])
Grades of John are:  [ 6.  7.]
Names are:  ['Sarah' 'John']

来源:https://juejin.cn/post/7136106405836095525

标签:Python,NumPy,数据,类型,对象
0
投稿

猜你喜欢

  • 详解如何在python中读写和存储matlab的数据文件(*.mat)

    2023-06-27 22:24:32
  • Python RuntimeError: thread.__init__() not called解决方法

    2022-12-22 17:11:46
  • 通俗讲解Python中的五种下划线含义

    2023-09-14 04:06:14
  • Python获取网络图片和视频的示例代码

    2023-06-24 08:37:58
  • python包合集shutil示例代码详解

    2022-03-28 12:04:27
  • 基于Python实现超级玛丽游戏的示例代码

    2022-02-14 16:48:00
  • sqlplus登录\\连接命令、sqlplus命令的使用大全

    2023-07-01 08:16:31
  • 通过js获取div的background-image属性

    2023-08-23 06:07:23
  • python 切换root 执行命令的方法

    2021-10-16 22:33:43
  • python套接字socket通信

    2023-01-26 17:51:03
  • 对pandas的dataframe绘图并保存的实现方法

    2021-12-21 14:54:50
  • 浅谈PyQt5中异步刷新UI和Python多线程总结

    2023-08-22 01:37:18
  • 关于Python Socket编程的要点详解

    2021-11-25 17:44:11
  • selenium 多窗口切换的实现(windows)

    2021-08-17 03:58:54
  • 快速掌握ASP连接11种数据库的常用语法

    2008-11-28 15:32:00
  • 设计可以量化吗?

    2009-06-12 12:12:00
  • Python闭包和装饰器用法实例详解

    2021-04-07 10:05:02
  • 详解ABP框架中的数据过滤器与数据传输对象的使用

    2024-05-02 17:19:47
  • Python使用eval函数执行动态标表达式过程详解

    2022-05-29 07:03:30
  • mysql int范围与最大值分析

    2012-03-26 18:24:00
  • asp之家 网络编程 m.aspxhome.com