Python .append()方法赢得';不能在我定义的函数中工作

Python .append()方法赢得';不能在我定义的函数中工作,python,numpy,statistics,append,percentile,Python,Numpy,Statistics,Append,Percentile,我试图定义一个函数来得到一个数字对应的百分位数,给定一个分布 我是这样定义函数的: def minimum_percentile(sample, number): percentiles = [] for i in range(100): percentile = np.percentile(sample, i) if percentile.any() >= number: percentiles.append(per

我试图定义一个函数来得到一个数字对应的百分位数,给定一个分布

我是这样定义函数的:

def minimum_percentile(sample, number):
    percentiles = []
    for i in range(100):
        percentile = np.percentile(sample, i)
        if percentile.any() >= number:
            percentiles.append(percentile)
        else:
            continue
    return min(percentiles)
minimum_percentile(packages_means, 33.1388)
当我调用函数时:

def minimum_percentile(sample, number):
    percentiles = []
    for i in range(100):
        percentile = np.percentile(sample, i)
        if percentile.any() >= number:
            percentiles.append(percentile)
        else:
            continue
    return min(percentiles)
minimum_percentile(packages_means, 33.1388)
我得到的错误与以下事实有关:我的函数似乎没有填充空列表,因此收到以下错误消息:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-64-9923821f6175> in <module>
----> 1 minimum_percentile(packages_means, 33.1388)

<ipython-input-63-955dedc13fde> in minimum_percentile(sample, number)
      5         if percentile.any() >= number:
      6             percentiles.append(percentile)
----> 7     return min(percentiles)

ValueError: min() arg is an empty sequence
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
---->1个最低百分位数(平均值33.1388)
最小百分比(样本、数量)
5如果百分位数.any()>=数字:
6个百分位数。附加(百分位数)
---->7最小返回值(百分位数)
ValueError:min()参数是空序列

我的代码出了什么问题?

我设法修复了它,这是我使用的代码:

def minimum_percentile(sample, number):
    percentiles = []
    for i in range(100):
        percentile = np.percentile(sample, i)
        if percentile <= number:
            percentiles.append(i)
        else:
            continue
    return max(percentiles)
def最小百分比(样本、数量):
百分位数=[]
对于范围(100)内的i:
百分位数=np.百分位数(样本,i)

如果percentile我对您的代码进行了一些处理,但min()函数似乎不起作用,因为您的列表“percentiles”为空。因此,我添加了一个部分,其中我检查列表是否为空,程序应返回“无”,以下是我得到的结果:

import numpy as np
def minimum_percentile(sample, number):
    percentiles = []
    for i in range(100):
        percentile = np.percentile(sample, i)
        if percentile >= number:
            percentiles.append(percentile)

        else:
            continue
    if not percentiles:
        return "None"
    else:
        return min(percentiles)
l = [1,2,3,4,5]
minimum_percentile(l, 2.5)
2.52


您没有在(空的)
百分位数列表中添加任何内容,您没有这样做的原因可能是因为您的
百分位数.any()>=number
没有做您认为应该做的事情。有很好的答案。Append很好用。您需要调试代码。这正是MCVE非常重要的原因。如果不显示函数的调用方式,则显示您编写的函数是毫无意义的。根据您的答案,将
if percentile.any()>=number:
更改为
if(percentile>=number)。any():
,我投票决定结束,因为你似乎误读了文件中关于百分位数排序方式的内容。这对未来的读者没有帮助,因为我们不知道为什么会这样。看来你误读了文件比其他任何东西都要多。