当前位置: 首页 > 面试题库 >

初始化字符串数据的numpy数组的怪异行为

莘绍元
2023-03-14
问题内容

当数组包含字符串数据时,我在使用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的字符串数组。您必须确定足够大的大小才能容纳要保留的所有数据。



 类似资料:
  • 问题内容: 在查看源文件时,我看到了两种数组初始化方式。我想知道两者之间是否有区别 和 ? 问题答案: 实际上没有区别。它 在java数组声明中。 第一种类型声明不那么令人困惑,至少对我而言:)。 注意: 我不确定为什么在声明时将长度设为 零 。 如果可能的话,请访问https://stackoverflow.com/a/19558179/1927832,以获取相对于其他方面的某些优势。

  • 问题内容: 有没有办法初始化形状的numpy数组并将其添加到其中?我将通过列表示例解释我需要的内容。如果要创建循环中生成的对象列表,可以执行以下操作: 我想对一个numpy数组做类似的事情。我了解vstack,串联等。但是,这些似乎需要两个numpy数组作为输入。我需要的是: 本应具有的形状。这该怎么做? 编辑: 我想添加以下说明。我知道我可以定义然后填充它。但是,这需要预先指定big_array

  • 问题内容: 在Java中,以以下方式初始化String数组是完全合法的: 但是,当尝试实例化以String数组作为参数的类时,不允许以下代码: 但这再次起作用: 有人可以解释为什么吗? 问题答案: String[] s = {“FOO”, “BAR”}; 仅在声明时允许 你不能

  • 问题内容: 我希望能够“快速”构建一个numpy数组,但我不知道该数组的大小。 例如,我想做这样的事情: 这将导致包含x的所有元素,这显然是一个简单的答案。我很好奇这是否可能? 问题答案: 构建一个Python列表并将其转换为Numpy数组。每个附加项需要O(1)的摊销时间+ O( n )才能转换为数组,总共需要O( n )。

  • 我需要初始化具有相同形状的多个Numpy数组。想知道哪种方式是最好的: 为每个人写一行: 或者有更好的方法?

  • 问题内容: 我希望您能从该示例中了解到我想要做什么。我该如何在Go中执行此操作? 问题答案: (点击播放)