为何NumPy结构化数组中的字符串字段显示为空?
为什么NumPy结构化数组的字符串字段显示为空?
问题根源在于定义结构化数组的dtype时,使用np.str_但未指定字符串长度。NumPy中,np.str_(即np.unicode_)作为结构化字段类型时,必须明确字符串的最大长度——如果不指定,默认会创建长度为0的字符串类型,传入的字符串无法被正确存储,最终显示为空。
修正方法
有两种常用的修正方式:
- 给
np.str_指定长度,比如设置为能容纳最长字符串的数值(示例中设为10) - 使用更简洁的Unicode字符串类型代码
U+长度,比如'U10'
修正后的代码示例
import numpy as np # 方式一:指定np.str_的长度 d = np.dtype([('name', np.str_, 10), ('salary', np.int64)]) arr = np.array([('Vedant', 80000), ('Subodh', 4000)], dtype=d) print(arr) # 方式二:使用U类型代码定义字符串类型 d = np.dtype([('name', 'U10'), ('salary', np.int64)]) arr = np.array([('Vedant', 80000), ('Subodh', 4000)], dtype=d) print(arr)
执行后会得到正确输出:
[('Vedant', 80000) ('Subodh', 4000)]
内容的提问来源于stack exchange,提问作者Vedant Bhosale
相关产品推荐
相关产品推荐

