SciPy中的Itemfreq()会引发错误' NotImplementedType'对象没有属性' flat'

时间:2016-02-22 15:10:39

标签: python numpy scipy

我有以下软件包,我很遗憾无法升级:

  • Numpy:1.8.2
  • SciPy:0.13.3

我需要计算numpy数组中字符串变量的频率,我想用SciPy方法itemfreq()来做。但是,运行它时出现以下错误。怎么解决这个问题?

  File "my_script.py", line 29, in count_uniq
    freq = itemfreq(dat)
  File "/usr/lib/python2.7/dist-packages/scipy/stats/stats.py", line 1465, in itemfreq
    scores = _support.unique(a)
  File "/usr/lib/python2.7/dist-packages/scipy/stats/_support.py", line 50, in unique
    if np.add.reduce(np.equal(uniques,item).flat) == 0:
AttributeError: 'NotImplementedType' object has no attribute 'flat'

2 个答案:

答案 0 :(得分:3)

我看了一下源代码here,docstring报告函数unique()(scipy.stats的一部分)对带字符串的数组不起作用。

解决此问题的一种方法是将字符串映射到数值,然后重试。

答案 1 :(得分:0)

NotImplemented开始,我怀疑np.equal(uniques,item)来自uniques部分。

itemitem的维度可能不一样。看起来m的形状为n,独特的形状为(m, n),结果应为item == np.array(list('uniques'))[...,np.newaxis]形状。如果是这样,将其更改为public class HideHintEditText extends EditText { CharSequence hint; public HideHintEditText(Context context) { super(context); hint = this.getHint(); } public HideHintEditText(Context context, AttributeSet attrs) { super(context, attrs); hint = this.getHint(); } public HideHintEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); hint = this.getHint(); } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); this.setHint(focused ? "" : hint); } } 可能会解决问题。