Python - подмножество массива, использующее другой массив, получая IndexError - PullRequest
0 голосов
/ 03 февраля 2020

У меня проблемы с простой задачей нарезки массива на основе значений другого массива.

У меня есть массив баллов с формой:

scores.shape = (1, 100, 1)

для оценки достоверности для 100 обнаружений в каждом изображении в пакете (но я использую одно изображение, поэтому у меня есть только один элемент в пакете). Итак, для первого и единственного изображения у меня есть значения для 100 обнаружения: *

scores[0] -> [score00, ..., score99]

Затем у меня есть другой аналогичный массив, bboxes ... для каждого изображения в пакете (опять же, используя только одно изображение), и для всех 100 обнаружений в каждом изображении оно содержит 4 значения. Итак, форма:

bboxes.shape = (1, 100, 4)

Для единственного изображения у меня есть 100 четверок значений

bboxes[0] -> [ [x_min, y_min, x_max, y_max], ..., [x_min, y_min, x_max, y_max] ]

, и из этих 100 четвертей мне нужно извлечь только те, которые соответствуют элементы в баллах, значение которых превышает определенный порог (0,5). Итак, скажем, что только первые 2 балла выше порога, я бы хотел только первые 2 четверки.

Я пытаюсь что-то вроде:

print(bboxes[0][scores[0]>0.5])

но я получаю ошибку:

IndexError: boolean index did not match indexed array along dimension 1; dimension is 4 but corresponding boolean dimension is 1

Что я делаю не так?

1 Ответ

1 голос
/ 03 февраля 2020

Попробуйте это:

for score, box in zip(scores[0], bboxes[0]):
    if score > 0.5:
        print(box)
...