numpy - python - 在范围内查找模式值的方法

68 2

我有一个这种结构的numpy维度值数组:


arr = array([[3067, 78, 3172, 134],


 [3237, 89, 3394, 128],


 [3475, 87, 3743, 141],


 [3763, 86, 3922, 131],


 [3238, 147, 3259, 154]])



它基本上存储屏幕上数据的位置,其中的值表示为:[x_left, y_top, x_right, y_bottom]]

我知道scipy.mode,它返回模值,有没有一种方法可以返回多个模,例如,在给定的numpy列中前10个模值?

时间: 原作者:

78 1

你可以将numpy数组列转换为Pandas系列并使用.value_counts()


import pandas as pd


x_left = pd.Series(arr[:,0])


x_left.value_counts()


#3475 1


#3237 1


#3067 1


#3763 1


#3238 1


#dtype: int64



你还可以将这些值四舍五入,例如,最接近的10个整数将范围之间的值分组,


def customRound(x, base=10):


 return base * round(x/base)


x_left_round = x_left.apply(customRound)


x_left_round.value_counts()


#3240 2


#3760 1


#3070 1


#3480 1


#dtype: int64



然后,可以看到两个x_left值接近3240,

原作者:
...