【发布时间】:2017-04-07 18:55:01
【问题描述】:
我有一个带有数字的一维 numpy 数组,我希望将每个数字替换为它所属的分位数的索引。
这是我的五分位指数代码:
import numpy as np
def get_quintile_indices( a ):
result = np.ones( a.shape[ 0 ] ) * 4
quintiles = [
np.percentile( a, 20 ),
np.percentile( a, 40 ),
np.percentile( a, 60 ),
np.percentile( a, 80 )
]
for q in quintiles:
result -= np.less_equal( a, q ) * 1
return result
a = np.array( [ 58, 54, 98, 76, 35, 13, 62, 18, 62, 97, 44, 43 ] )
print get_quintile_indices( a )
输出:
[ 2. 2. 4. 4. 0. 0. 3. 0. 3. 4. 1. 1.]
您会看到,我从一个使用可能的最高索引初始化的数组开始,并且对于每个五分位切点,从小于或等于五分位切点的每个条目中减去 1。有一个更好的方法吗?可用于将数字映射到切点列表的内置函数?
【问题讨论】:
标签: python performance numpy vectorization quantile