网易首页 > 网易号 > 正文 申请入驻

NumPy:dtype 数据类型

0
分享至

在 NumPy 中,数组不仅存储数据本身,还必须明确指定每个元素的数据类型。这一类型系统由 dtype(data type)对象统一管理。

与 Python 的动态类型不同,NumPy 数组中的元素通常具有统一的数据类型,并以固定字节数在内存中连续存储。这种设计使 NumPy 能够使用底层 C 语言实现高效的向量化计算,从而显著提高数值计算性能。

dtype 不仅描述元素的数据类型,还包含有关字节大小、字节顺序以及字段结构等信息。

一、dtype 的基本概念

dtype 是 NumPy 中用于描述数组元素类型的对象。

可以通过数组属性查看数据类型:

ndarray.dtype

示例:

print(a.dtype)

输出:

int64

表明该数组的元素类型为 64 位整数。

可在创建数组时指定 dtype:

np.array(data, dtype=...)

示例:

print(a.dtype)

输出:

float64

NumPy 数据类型具有以下特点:

• 数组中的元素通常具有统一类型

• 每个元素占用固定字节数

• 数据在内存中连续存储

• 运算可利用底层 C 语言优化与 SIMD 指令

因此,dtype 会影响数组的计算速度、内存占用以及数值精度。

NumPy dtype 所描述的数组元素数据类型可分为以下几类:

类型类别

示例

布尔

bool_

整数

int8, int16, int32, int64

无符号整数

uint8, uint16, uint32 , uint64

浮点

float16, float32, float64

( 部分平台支持 float128)

复数

complex64, complex128

(部分平台支持 complex256)

字符串

字节字符串 S

Unicode 字符串 U

对象

object_

时间

datetime64, timedelta64

结构化

structured dtype

原始数据

void

二、NumPy 的基本数值类型

NumPy 提供了一套独立于 Python 内置类型的数值类型系统。

1、整数类型(Integer)

整数类型用于表示整型数值。

常见整数类型:

类型

字节

int8

1

8 位整数

int16

2

16 位整数

int32

4

32 位整数

int64

8

64 位整数

uint8

1

无符号 8 位整数

uint16

2

无符号 16 位整数

uint32

4

无符号 32 位整数

uint64

8

无符号 64 位整数

示例:

print(a.dtype)

输出:

int32

2、浮点类型(Floating Point)

浮点类型用于表示带小数的数值。

类型

字节

float16

2

半精度浮点

float32

4

单精度浮点

float64

8

双精度浮点

示例:

print(a.dtype)

输出:

float32

3、复数类型(Complex)

复数类型用于表示复数。

类型

complex64

实部和虚部均为 float32

complex128

实部和虚部均为 float64

示例:

print(a.dtype)

输出:

complex64

4、布尔类型(Boolean)

NumPy 的布尔 dtype 表示为 bool,其对应的 NumPy 标量类型为 np.bool_。

示例:

print(a.dtype)

输出:

bool

np.bool_ 是 NumPy 的布尔标量类型,用于表示单个布尔值。

print(type(b))  #

当 NumPy 数组的 dtype 为 bool 时,其内部每个元素实际上都是 np.bool_ 类型的标量对象。

print(type(a[0]))    #

三、dtype 类型代码

在 NumPy 中,每一种数据类型不仅有名称形式(如 int32、float64),还存在一种更简短的表示方式,称为类型代码(type code)。

类型代码通常由:

类型字母 + 字节数

组成。

常见类型代码:

类型代码

等价类型

i1

int8

8 位整数

i2

int16

16 位整数

i4

int32

32 位整数

i8

int64

64 位整数

u1

uint8

无符号 8 位整数

u2

uint16

无符号 16 位整数

u4

uint32

无符号 32 位整数

u8

uint64

无符号 64 位整数

f4

float32

单精度浮点

f8

float64

双精度浮点

c8

complex64

复数(两个 float32)

c16

complex128

复数(两个 float64)

示例:

print(a.dtype)  # int32

dtype 类型代码常见的类型字母:

字母

含义

b

布尔

i

有符号整数

u

无符号整数

f

浮点数

c

复数

S

字节字符串

U

Unicode 字符串

O

Python 对象

M

datetime64

m

timedelta64

V

void(原始数据)

类型代码通常用于以下场景。

(1)快速指定 dtype

dtype="f8"

(2)结构化数组

dtype=[("age","i4"),("score","f4")]

(3)二进制数据解析

np.fromfile("data.bin", dtype="i2")

(4)dtype 字符串表示

例如:

dtype(' )

< 表示 little-endian 的 float64,f8 表示 8 字节浮点数。

四、字节序

NumPy dtype 还可以描述数据的字节顺序(byte order)。

符号

含义

little-endian

big-endian

本机字节序

示例:

print(dt)

NumPy dtype 字符串格式是:

byteorder + type + size

例如:

float64

在计算机体系结构与数据表示中:

英文

中文翻译

含义

little-endian

小端序 / 小端字节序

低位字节存放在低地址

big-endian

大端序 / 大端字节序

高位字节存放在低地址

字节序在二进制文件读写和跨平台数据交换中尤为重要。

五、其它数据类型

1、字符串类型

NumPy 支持固定长度字符串。

类型

S

字节字符串

U

Unicode 字符串

示例:

print(a.dtype)

输出:

U10 表示最多长度为 10 的 Unicode 字符,< 是 dtype 表示格式中的字节序标记。

2、时间类型

NumPy 还提供专门的时间数据类型。

datetime64

用于表示日期和时间。

示例:

print(a)

输出:

['2026-01-01' '2026-01-02']

解释单位:

单位

含义

Y

M

D

h

小时

m

分钟

s

ms

毫秒

timedelta64

用于表示时间间隔。

示例:

print(a)

输出:

[1 2 3]

说明:这些数值表示时间间隔的数量,单位由 dtype 指定。例如 D 表示为天(day)为单位。

3、Python 对象类型

NumPy 也可以存储 Python 对象,dtype 类型为 object。

示例:

print(type(a[1]))

输出示例:

numpy.object_ 是 NumPy 的对象标量类型。当数组的 dtype 为 object 时,每个元素实际上都是 numpy.object_ 类型的标量,用于封装任意 Python 对象。

也可以直接创建 numpy.object_ 标量:

print(type(x))  #

dtype 为 object 的数组不再是纯数值数组,每个元素存储的是 Python 对象引用。

与普通 NumPy 数组相比:

• 计算速度较慢

• 不适合数值计算

• 通常只用于特殊数据结构

4、结构化数据类型

NumPy 允许数组元素包含多个字段,类似 C 语言中的结构体。

示例:

print(data)

输出:

[('艾婉婷', 18, 88.5) ('岳露珊', 19, 92. )]

访问字段:

print(data["age"])

输出:

[18 19]

说明:结构化数组适用于表格型记录数据。

六、类型转换

NumPy 可以使用 astype() 进行数据类型转换。

ndarray.astype(dtype)

示例:

print(b.dtype)

输出:

float64

astype() 会创建新的数组。

小结

dtype 是 NumPy 数组的重要组成部分,用于描述数组元素的数据类型、字节大小以及存储结构。NumPy 提供整数、浮点数、复数、布尔、字符串和时间等多种数据类型,并支持结构化 dtype 用于记录型数据。创建数组时可以通过 dtype 指定元素类型,也可以使用 astype() 进行类型转换。理解 dtype 的机制,有助于更好地控制数组的内存结构、计算精度与计算性能。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
巴列卡诺主帅:若必须从皇马去掉1人,我选穆里尼奥

巴列卡诺主帅:若必须从皇马去掉1人,我选穆里尼奥

懂球帝
2026-09-11 05:41:09
房价很大可能重走 1998 年老路,大家要有心理准备

房价很大可能重走 1998 年老路,大家要有心理准备

专业聊房君
2026-09-09 18:19:07
虽败犹荣,中国女篮被淘汰,却收两大喜讯,李梦有望重磅回归

虽败犹荣,中国女篮被淘汰,却收两大喜讯,李梦有望重磅回归

宗介说体育
2026-09-11 10:16:30
毛主席为何拒绝给董存瑞题词?得知缘由后,众人钦佩:伟人高明

毛主席为何拒绝给董存瑞题词?得知缘由后,众人钦佩:伟人高明

文史道
2025-07-03 20:21:14
深圳宝安警方通报“江西台记者采访被掌掴”:打人者已被行政拘留

深圳宝安警方通报“江西台记者采访被掌掴”:打人者已被行政拘留

每日经济新闻
2026-09-11 14:43:09
上海52岁男子胰腺癌离世,医生劝言:晚饭切记少吃这5物

上海52岁男子胰腺癌离世,医生劝言:晚饭切记少吃这5物

芹姐说生活
2026-09-10 23:01:31
杨鼎新再克余正麒,喜获三连胜!农心杯第三局!

杨鼎新再克余正麒,喜获三连胜!农心杯第三局!

尘中见月q
2026-09-11 17:04:07
也门胡塞武装称红海西海岸交火已停止

也门胡塞武装称红海西海岸交火已停止

界面新闻
2026-09-11 13:43:55
现实版多尔衮悲剧!东莞一男子供养女友3个孩子多年,最终惨遭枕边人杀害分尸,评论区炸锅

现实版多尔衮悲剧!东莞一男子供养女友3个孩子多年,最终惨遭枕边人杀害分尸,评论区炸锅

火山詩话
2026-09-10 06:44:55
广西横州洪水中60岁女子被毒蛇咬伤身亡,养蛇场负责人:无法证明蛇来自我这儿,最多补偿2万元;死者家属称准备起诉

广西横州洪水中60岁女子被毒蛇咬伤身亡,养蛇场负责人:无法证明蛇来自我这儿,最多补偿2万元;死者家属称准备起诉

扬子晚报
2026-09-11 07:28:53
果然被我说对了,美国白宫突然宣布了,从9月29日起直接禁止进口加拿大的酒精饮料、乳制品、部分摩托车等多个门类商品

果然被我说对了,美国白宫突然宣布了,从9月29日起直接禁止进口加拿大的酒精饮料、乳制品、部分摩托车等多个门类商品

扶苏聊历史
2026-09-11 16:43:19
中方发邀请,上合4国同步进京,普京已看透,中国和俄罗斯不一样

中方发邀请,上合4国同步进京,普京已看透,中国和俄罗斯不一样

影孖看世界
2026-09-10 21:23:36
这么多“刚好”、“巧合”凑在一起,你觉得公众会信吗?

这么多“刚好”、“巧合”凑在一起,你觉得公众会信吗?

走读新生
2026-09-10 17:24:39
已破案!员工裸奔涉事上市公司出来认领了

已破案!员工裸奔涉事上市公司出来认领了

财通社
2026-09-10 20:51:58
阿森纳去年花费1.3亿英镑签下的2名球员,如今已经接近废废了

阿森纳去年花费1.3亿英镑签下的2名球员,如今已经接近废废了

福酱的小时光
2026-09-11 13:25:49
纵观NBA80年,真正拉低名人堂门槛的只有5人,文斯·卡特在列

纵观NBA80年,真正拉低名人堂门槛的只有5人,文斯·卡特在列

而长终
2026-09-10 12:36:47
匀称式穿搭,前后弧度大小相等!

匀称式穿搭,前后弧度大小相等!

飛尚日记
2026-09-10 07:50:06
算是踢到铁板了!这届日本亚运会,给全世界好好上了一课:没有中国,生意很难做

算是踢到铁板了!这届日本亚运会,给全世界好好上了一课:没有中国,生意很难做

扶苏聊历史
2026-09-10 14:58:19
杭州地方国企疯狂财务造假,多项业务纯属虚构,时任董事长已被查办

杭州地方国企疯狂财务造假,多项业务纯属虚构,时任董事长已被查办

大风新闻
2026-09-11 09:20:02
脸都不要了!湖南洞口孩子买了50元学平险,结果真得癌了,谁料保险公司翻出国际疾病分类,说编码不对,不符合“恶性肿瘤-重度”条款

脸都不要了!湖南洞口孩子买了50元学平险,结果真得癌了,谁料保险公司翻出国际疾病分类,说编码不对,不符合“恶性肿瘤-重度”条款

火山詩话
2026-09-10 10:40:36
2026-09-11 18:23:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2158文章数 86关注度
往期回顾 全部

科技要闻

苹果折叠屏比小米华为贵5000元,该怎么选

头条要闻

3名俄男子被乌女特工"招募" 女方发送自己的火辣照片

头条要闻

3名俄男子被乌女特工"招募" 女方发送自己的火辣照片

体育要闻

37岁还能场场进球,还能翻跟头!

娱乐要闻

黄晓明直言帮太多白眼狼,杨颖遭殃

财经要闻

千叶珠宝创始人夫妇失联 股价应声"腰斩"

汽车要闻

买菜车也有小乐趣 风云T7不止是台合格家用SUV

态度原创

艺术
家居
亲子
房产
军事航空

艺术要闻

梅尔尼科夫:全山石、苏高礼、林岗等的老师

家居要闻

2026建博会(广州) 公装联探展交流活动

亲子要闻

经济拮据,全职宝妈鼓起勇气出来找工作!找到满意岗位却陷入两难:伸手找老公拿家用,还是出门挣工资?

房产要闻

时隔7年,绿地海南再拿地!

军事要闻

涉伊朗核问题 中国和俄罗斯投下反对票

无障碍浏览 进入关怀版