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

如何声明字符串NumPy数组?赋值长字符串仅显示单个字符的问题与解决

问题

代码如下:

import numpy as np

row_length = 5
col_length = 3
x = np.empty([row_length,col_length],dtype=str) 
x[1,2]='ddd'
print(x)

运行结果:

[['' '' '']
 ['' '' 'd']
 ['' '' '']
 ['' '' '']]

预期结果:

[['' '' '']
 ['' '' 'ddd']
 ['' '' '']
 ['' '' '']]

原因分析

在numpy中,指定dtype=str时,默认会创建长度为1的Unicode字符串数组(等价于dtype='U1')。这种数组的每个元素仅能容纳1个字符,所以赋值'ddd'时会被自动截断为第一个字符'd'。

解决方法

有两种常用的处理方式:

  • 指定固定长度的字符串类型:创建数组时明确设置字符串的最大长度,比如要存储3个字符就用dtype='U3',修改后代码如下:
    import numpy as np
    
    row_length = 5
    col_length = 3
    x = np.empty([row_length,col_length],dtype='U3') 
    x[1,2]='ddd'
    print(x)
    
  • 使用object类型:如果不确定字符串长度,或需要存储任意长度的字符串,可以用dtype=object,此时数组元素会存储字符串对象,不会出现截断。代码如下:
    import numpy as np
    
    row_length = 5
    col_length = 3
    x = np.empty([row_length,col_length],dtype=object) 
    x[1,2]='ddd'
    print(x)
    
    注意:object类型数组会丢失numpy部分矢量化操作的性能优势,更适合字符串长度差异较大的场景。

内容的提问来源于stack exchange,提问作者user2155362

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:47:06