当数组包含字符串数据时,我在使用 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 的预期输出。为什么会这样,我怎样才能得到正确的输出?
谢谢!
最佳答案
Numpy 要求字符串数组具有固定的最大长度。当您使用 dtype=str
创建一个空数组时,它默认将此最大长度设置为 1。你可以看看你是否做了 my_array.dtype
;它将显示“|S1”,意思是“一个字符的字符串”。对数组的后续赋值将被截断以适应此结构。
您可以通过以下方式传递具有最大长度的显式数据类型,例如:
my_array = numpy.empty([1, 2], dtype="S10")
“S10”将创建一个长度为 10 的字符串数组。您必须决定有多大才能容纳您想要容纳的所有数据。
关于python - 初始化字符串数据的numpy数组的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717554/