如何为numpy数组元素赋值完整字符串,避免仅截取首字符
问题原因
你创建numpy数组时指定dtype=str,默认会被解析为长度为1的Unicode字符串类型U1,赋值时只会保留字符串的首个字符,这属于numpy字符串类型的默认规则,不是逻辑写法错误。
另外你的示例代码存在笔误:函数内的arry[i,0]拼写错误,正确应为array[i,0],否则运行时会触发NameError。
解决方案
方案1:指定固定长度的字符串类型
提前评估需要存储的字符串最大长度,创建数组时指定对应长度的Unicode字符串类型即可,格式为U+最大长度,比如需要存最长10位的字符串就写U10:
import numpy i=0 def func(name,number,array,i): array[i,0]=number array[i,1]=name print(array) People = numpy.zeros([5,2], dtype='U10') func("qwe","123",People,i)
运行后即可输出你期望的结果。
方案2:使用object类型存储
如果无法提前确定字符串的最大长度,可以指定数组类型为object,直接存储Python原生字符串对象:
import numpy i=0 def func(name,number,array,i): array[i,0]=number array[i,1]=name print(array) People = numpy.zeros([5,2], dtype=object) func("qwe","123",People,i)
内容的提问来源于stack exchange,提问作者Bruno Rojas Acevedo
相关产品推荐
相关产品推荐

