Способ найти значения режима в пределах диапазона - PullRequest
1 голос
/ 31 октября 2019

У меня есть массив значений измерений в этой структуре:

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]]

Мне нужно работать только со значениями x_left, так как я пытаюсь найти, где на странице я, скорее всего, смогу найти эти объекты.

Мне известно о scipy.mode, который возвращает режимценности. Есть ли способ вернуть несколько режимов, скажем, 10 лучших значений режима в данном столбце numpy? А еще лучше, есть ли способ использовать режим, чтобы режим находился в заданном диапазоне? Например, строки выше имеют значения x_left 3237 и 3238, которые довольно близко выровнены. Есть ли способ рассчитать эти два значения в одном режиме?

1 Ответ

1 голос
/ 31 октября 2019

Вы можете преобразовать свой столбец массива в ряд панд и использовать .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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...