2024-03-29 04:38:13 发布
网友
当数组包含字符串数据时,我在numpy上遇到了一些看似微不足道的问题。我有以下代码:
my_array = numpy.empty([1, 2], dtype = str) my_array[0, 0] = "Cat" my_array[0, 1] = "Apple"
现在,当我用print my_array[0, :]打印它时,得到的响应是['C', 'A'],这显然不是Cat和Apple的预期输出。为什么,我怎么才能得到正确的输出?
print my_array[0, :]
['C', 'A']
谢谢!
numpy字符串数组受其固定长度(默认长度为1)的限制。如果您不确定预先需要字符串的长度,可以使用dtype=object,并为数据元素获取任意长度的字符串:
dtype=object
my_array = numpy.empty([1, 2], dtype=object)
我知道这种方法可能存在效率缺陷,但我没有很好的参考资料来支持这一点。
当我试图将非ascii字符与dtype="S10"一起使用时,出现了“编解码器错误”
dtype="S10"
你还得到了一个带二进制字符串的数组,这让我很困惑。
我认为最好使用:
my_array = numpy.empty([1, 2], dtype="<U10")
Numpy要求字符串数组具有固定的最大长度。使用dtype=str创建空数组时,默认情况下,它会将此最大长度设置为1。您可以查看是否执行my_array.dtype;它将显示“| S1”,意思是“一个字符串”。数组中的后续赋值将被截断以适合此结构。
dtype=str
my_array.dtype
通过执行以下操作,可以传递具有最大长度的显式数据类型:
my_array = numpy.empty([1, 2], dtype="S10")
“S10”将创建一个长度为10个字符串的数组。你必须决定有多大才能容纳所有你想保存的数据。
numpy字符串数组受其固定长度(默认长度为1)的限制。如果您不确定预先需要字符串的长度,可以使用
dtype=object
,并为数据元素获取任意长度的字符串:我知道这种方法可能存在效率缺陷,但我没有很好的参考资料来支持这一点。
当我试图将非ascii字符与
dtype="S10"
一起使用时,出现了“编解码器错误”你还得到了一个带二进制字符串的数组,这让我很困惑。
我认为最好使用:
my_array = numpy.empty([1, 2], dtype="<U10")
Numpy要求字符串数组具有固定的最大长度。使用
dtype=str
创建空数组时,默认情况下,它会将此最大长度设置为1。您可以查看是否执行my_array.dtype
;它将显示“| S1”,意思是“一个字符串”。数组中的后续赋值将被截断以适合此结构。通过执行以下操作,可以传递具有最大长度的显式数据类型:
“S10”将创建一个长度为10个字符串的数组。你必须决定有多大才能容纳所有你想保存的数据。
相关问题 更多 >
编程相关推荐