为什么NumPy中要使用np.string_而不能用不带下划线的np.string?
输出结果含义
- 数组输出中每个元素前缀的
b是Python字节串(bytes)的标识,说明数组存储的不是普通的Unicode字符串,而是字节序列。np.string_本身就是NumPy的定长字节串类型,创建数组时会自动把输入的整数转换为对应的字节串格式存储。 - dtype输出的
|S1是NumPy对该数据类型的标准化表示:S是定长字节串类型的缩写,对应你指定的np.string_- 后缀的数字
1表示每个元素的最大占用长度为1字节,你输入的都是单个数字,转换为字节串后仅占1字节,因此显示为S1 - 前缀的
|是字节序标记,字节串类型不需要区分大小端字节序,因此用该符号表示不关心字节序。
为什么必须使用np.string_而不能用np.string
NumPy的类型命名有统一规则:所有和Python原生类型、标准库命名重名的NumPy专属类型,都会在名称末尾加下划线后缀,避免命名冲突:
- Python标准库本身存在
string模块,如果NumPy直接使用np.string作为类型名会和现有命名冲突,因此将自身的字节串类型命名为np.string_,对应的Unicode字符串类型命名为np.str_ np.string本身并不是NumPy的合法内置属性,直接调用会抛出属性不存在的错误,自然不能作为dtype参数使用。
内容的提问来源于stack exchange,提问作者SpamMeUpScottie
相关产品推荐
相关产品推荐

