Python 将数字映射到它们的百分位数

Python 将数字映射到它们的百分位数,python,pandas,numpy,percentile,Python,Pandas,Numpy,Percentile,我想将的结果应用于它的参数,即,将输入向量中的每个数字映射到它的分位数 例如,如果v=np.array[1,2,3,4],我只需要两个比中位数大和小的分位数,我会得到np.array[0,0,1,1],告诉我v的前两个元素比中位数小,后两个元素比中位数大 请注意,我对十位数感兴趣,而不仅仅是中位数 瞧,@PaulPanzer击中了要害: np.digitize(v,np.percentile(v,quantiles)) 谢谢 使用np.digitalize: (v > np.percen

我想将的结果应用于它的参数,即,将输入向量中的每个数字映射到它的分位数

例如,如果v=np.array[1,2,3,4],我只需要两个比中位数大和小的分位数,我会得到np.array[0,0,1,1],告诉我v的前两个元素比中位数小,后两个元素比中位数大

请注意,我对十位数感兴趣,而不仅仅是中位数

瞧,@PaulPanzer击中了要害:

np.digitize(v,np.percentile(v,quantiles))
谢谢

使用np.digitalize:

(v > np.percentile(v, 50)).astype(int)
Out[93]:
array([0, 0, 1, 1])
示例q=[25,50,75],数据=np.arange8:

使用np.0进行数字化:

示例q=[25,50,75],数据=np.arange8:


看看numpy。digitize@PaulPanzer当前位置请将您的评论转化为答案,我将接受。请看numpy。digitize@PaulPanzer当前位置请将您的评论转化为答案,我会接受。我做什么,比如说10个百分点,而不仅仅是中位数?看起来您得到了答案。我想提出一些建议,比如np.digitiev,bins=np.percentilev,np.arange100100,10。我做什么,比如说10个百分位数,而不仅仅是中位数?看起来你已经得到了答案。我想提出一些建议,比如np.digitiev,bins=np.percentilev,np.arange1010,10。
perc = np.percentile(data, q)
indices = np.digitize(data, perc)
indices
# array([0, 0, 1, 1, 2, 2, 3, 3])