Numpy.digitize() дает больше ячеек, чем ожидалось, при использовании краев ячейки из numpy.histogram ⇐ Python
Numpy.digitize() дает больше ячеек, чем ожидалось, при использовании краев ячейки из numpy.histogram
Моя цель — назначить каждому пикселю изображения (в моем случае массиву numpy) частоту интервала, в который он попадает. Например, у меня есть такие значения, как [0,5, 1, 2, 2, 4] и границы интервала, такие как [0, 1,5, 2,5, 3,5, 4,5]. Таким образом, частота для первого интервала должна быть равна 2, для второго — 2, для третьего — 0 и четвертого — 1. Таким образом, результат должен быть [2, 2, 2, 2, 1].
Мой план состоял в том, чтобы сначала использовать numpy.histogram(), чтобы получить частоты и края интервала, а затем использовать numpy.digitize() с краями интервала, чтобы назначить Индекс бункера, в который попадает пиксель, для каждого пикселя. Затем я хочу использовать эти присвоенные индексы для поиска в hist соответствующей частоты. Но я столкнулся с проблемой: numpy.digitize() дает мне больше ячеек, чем есть в hist, и я не могу сказать почему.
Мой код выглядит так:
Во-первых, у меня есть изображение (массив чисел), которое выглядит следующим образом:
a_noise = np.random.normal(0, 1, 40000).reshape((200,200)) Далее я беру гистограмму:
hist, bin_edges = np.histogram(a_noise, bins='fd') Теперь я использую np.digitize для присвоения индексов интервалов пикселям.
a_binidx = np.digitize(a_noise, bin_edges, right=True) В результате я получаю:
hist.shape Всего (109,) ячеек, поэтому возможные индексы варьируются от 0 до 108.
bin_edges.shape Всего (110,) bin_edges, что для меня имеет смысл. но когда я проверяю, какие индексы ячеек были заданы, я получаю в результате:
np.unique(a_binidx) array([ 0, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 , 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 , 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77 , 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102 , 103, 104, 105, 106, 107, 108, 109])
Самый высокий индекс — 109. Максимально возможный индекс для hist — 108.
Почему я получаю индекс 109 вместо 108?
Моя цель — назначить каждому пикселю изображения (в моем случае массиву numpy) частоту интервала, в который он попадает. Например, у меня есть такие значения, как [0,5, 1, 2, 2, 4] и границы интервала, такие как [0, 1,5, 2,5, 3,5, 4,5]. Таким образом, частота для первого интервала должна быть равна 2, для второго — 2, для третьего — 0 и четвертого — 1. Таким образом, результат должен быть [2, 2, 2, 2, 1].
Мой план состоял в том, чтобы сначала использовать numpy.histogram(), чтобы получить частоты и края интервала, а затем использовать numpy.digitize() с краями интервала, чтобы назначить Индекс бункера, в который попадает пиксель, для каждого пикселя. Затем я хочу использовать эти присвоенные индексы для поиска в hist соответствующей частоты. Но я столкнулся с проблемой: numpy.digitize() дает мне больше ячеек, чем есть в hist, и я не могу сказать почему.
Мой код выглядит так:
Во-первых, у меня есть изображение (массив чисел), которое выглядит следующим образом:
a_noise = np.random.normal(0, 1, 40000).reshape((200,200)) Далее я беру гистограмму:
hist, bin_edges = np.histogram(a_noise, bins='fd') Теперь я использую np.digitize для присвоения индексов интервалов пикселям.
a_binidx = np.digitize(a_noise, bin_edges, right=True) В результате я получаю:
hist.shape Всего (109,) ячеек, поэтому возможные индексы варьируются от 0 до 108.
bin_edges.shape Всего (110,) bin_edges, что для меня имеет смысл. но когда я проверяю, какие индексы ячеек были заданы, я получаю в результате:
np.unique(a_binidx) array([ 0, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 , 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 , 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77 , 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102 , 103, 104, 105, 106, 107, 108, 109])
Самый высокий индекс — 109. Максимально возможный индекс для hist — 108.
Почему я получаю индекс 109 вместо 108?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему Google Chrome не печатает границы таблиц и ячеек, а также цвета фона ячеек?
Anonymous » » в форуме Html - 0 Ответы
- 43 Просмотры
-
Последнее сообщение Anonymous
-