【问题标题】:AttributeError: 'module' object has no attribute 'percentile'AttributeError:“模块”对象没有属性“百分位”
【发布时间】:2013-04-08 07:14:55
【问题描述】:

我用这个函数计算here的百分位数:

import numpy as np
a = [12, 3, 45, 0, 45, 47, 109, 1, 0, 3]
np.percentile(a, 25)

但我收到此错误:

AttributeError: 'module' object has no attribute 'percentile'

我也试过

import numpy.percentile as np

但我没有得到同样的错误。

我的 numpy 版本是 1.3.0 我尝试升级但似乎不会使用:[sudo pip install --upgrade scipy][2] 但我发现没有升级。

我的 ubuntu 版本 9.10

我的python版本是:2.6.4

我也尝试绕过 numpy.percentile 模块,我发现了这个here

>>> def percentile(N, P):
...     n = int(round(P * len(N) + 0.5))
...     if n > 1:
...         return N[n-2]
...     else:
...         return 0
...
>>> a = [1, 23, 5, 45, 676, 2, 0, 4,3]
>>> a = sorted(a)
>>> a
[0, 1, 2, 3, 5, 4, 23, 45, 676]
#When I call the function using 
>>> percentile(a,0.5)
3

但是当我尝试手动查找0.5 percentile 时,我找到了5

谁能帮我解释一下为什么在这些情况下会发生这种情况?

【问题讨论】:

    标签: python numpy percentile


    【解决方案1】:

    percentile 函数已添加到 version 1.5.x。您需要至少升级到该版本。

    你试过了吗:

    sudo pip install numpy==1.7.1 --upgrade
    

    要检查您正在运行的版本,请启动 python 控制台并运行:

    >>> import numpy
    >>> print numpy.__version__
    

    你也可以这样做:

    sudo pip freeze | grep numpy
    

    Ubuntu 9.10 numpy 包使用version 1.3.03。安装 1.7.0 vai pip 版本很可能是成功的,但是您的机器默认使用 python-numpy 版本。您可以通过运行删除:

    sudo apt-get remove python-numpy
    

    【讨论】:

    • 非常感谢您的重播和链接。不,我没有尝试sudo pip install numpy==1.7.1 --upgrade,但我刚刚尝试了,但仍然收到相同的错误消息。
    • 版本为1.3.0,表示不会升级。
    • 使用sudo apt-get remove python-numpy卸载该版本
    • 完成!你推荐使用apt-get install python-numpy 安装numpy 吗?
    • 如果您使用的是最新版本的 Ubuntu,但您使用的是 9.10,它使用的是非常旧的(可能是 1.3.0)版本的 numpy,我会这样做。
    【解决方案2】:

    请升级你的 numpy 包

    pip install --upgrade numpy==1.19.1
    

    sudo pip install --upgrade numpy==1.19.1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-18
      相关资源
      最近更新 更多