python - 初始化字符串数据的numpy数组的奇怪行为

标签 python numpy

当数组包含字符串数据时,我在使用 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/

相关文章:

python - 如何使用 numpy 对矩阵中的多行进行向量化运算

python - 我如何通过 numpy 从大数组中搜索数组

python - 如何在 python 中将超大数与超小数相乘?

python - "List object is not callable"Python 错误

python - 如何读取边缘列表以制作 scipy 稀疏矩阵

python - 在 Django 模型中创建外键

python - 在 Python 中将 CSS ":contains:"与 WebDriver 结合使用

python - cv2.fitLine() 方法抛出的奇怪错误

python - 计算 3D 球面掩膜的直径线

python - 如何在 Plotly 中为瀑布图添加总值列