Numpy.digitize() дает больше ячеек, чем ожидалось, при использовании краев ячейки из numpy.histogramPython

Программы на 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?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ответ cv.calcHist() отличается от ответа np.histogram(), почему?
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Seasonal_Decompose дает график, заполненный до краев синими линиями.
    Гость » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Гость
  • Почему Google Chrome не печатает границы таблиц и ячеек, а также цвета фона ячеек?
    Anonymous » » в форуме Html
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Как изменить ценность ячеек в Ipysheest без создания новых ячеек?
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как предотвратить обрезку краев JCheckBox и JRadioButton при использовании пользовательского интерфейса Swing Windows 10
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»