为什么`stats.mode()`函数会截断字符串数组的答案?

时间:2014-03-04 03:49:36

标签: python scipy

我正在尝试使用scipy的stats.mode函数从字符串数组中获取最常见的字符串。但该函数由于某种原因截断字符串。

>>> a
array([' State-gov', ' Self-emp-not-inc', ' Private', ..., ' Private',
       ' Private', ' Self-emp-inc'],
      dtype='|S27')

>>> stats.mode(a)
(array([' P'],
      dtype='|S2'), array([ 22696.]))

(答案应该是' Private'。)任何想法如何获得完整的字符串?为什么会发生这种情况?

2 个答案:

答案 0 :(得分:3)

不确定你能用sp.stats.mode()解决 - 我之前也遇到过这种奇怪的行为。

对于非scipy解决方案,您可以使用collections.Counter

collections.Counter(a).most_common(1)

这将返回一个包含字符串及其出现次数的元组。

答案 1 :(得分:1)

它正在/正在发生,因为实现中存在一个错误,其中结果数组未使用与输入数组相同的dtype进行初始化。我提交了pull request来修复它已被接受,所以我想它将在scipy 1.9中修复。