You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:09:22